如何在 Toplevel 上存储数据?
How can I store data on Toplevel?
在顶层window,如果在使用入口小部件从用户那里获得一些输入后顶层关闭,然后通过按下相同的按钮打开相同的顶层,有没有办法看到我们在条目小部件中从用户那里收到的条目?
例如,用户在顶层 window 上输入他的名字,然后关闭 toplevel.Then 用户打开相同的顶层,我希望它在条目小部件中看到他的名字。
试试这个:
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, top, 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()
基本上我们会拦截 window 关闭并自行处理。我们还有一个存储最后用户输入的变量,我们在创建它后将其放入 tkinter.Entry
。
在顶层window,如果在使用入口小部件从用户那里获得一些输入后顶层关闭,然后通过按下相同的按钮打开相同的顶层,有没有办法看到我们在条目小部件中从用户那里收到的条目?
例如,用户在顶层 window 上输入他的名字,然后关闭 toplevel.Then 用户打开相同的顶层,我希望它在条目小部件中看到他的名字。
试试这个:
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, top, 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()
基本上我们会拦截 window 关闭并自行处理。我们还有一个存储最后用户输入的变量,我们在创建它后将其放入 tkinter.Entry
。