如何在 Toplevel 上存储数据?

问题描述

在顶层窗口中,如果使用 entry 小部件从用户那里获得一些输入后顶层关闭,然后通过按相同的按钮打开相同的顶层,有没有办法看到我们从入口小部件中的用户

例如用户在顶层窗口输入他的名字,然后关闭顶层。然后用户打开同一个顶层,我希望它在条目小部件中看到他的名字。

解决方法

试试这个:

import tkinter as tk

last_user_input_entry = ""
last_user_input_button = 0

def on_closing():
    global entry,top,last_user_input_entry,last_user_input_button,button_var
    text = entry.get()
    last_user_input_entry = text
    last_user_input_button = button_var.get()
    print("The text entered =",last_user_input_entry)
    print("Checkbutton state =",last_user_input_button)
    top.destroy()

def start_top():
    global entry,button_var
    top = tk.Toplevel(root)
    top.protocol("WM_DELETE_WINDOW",on_closing)

    entry = tk.Entry(top)
    entry.pack()
    entry.insert("end",last_user_input_entry)

    button_var = tk.IntVar()
    button_var.set(last_user_input_button)
    button = tk.Checkbutton(top,variable=button_var)
    button.pack()

root = tk.Tk()
button = tk.Button(root,text="Open toplevel",command=start_top)
button.pack()

root.mainloop()

基本上我们拦截窗口关闭并处理我们自己。我们还有一个存储最后用户输入的变量,我们在创建它后将其放入 tkinter.Entry

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...