如何在 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