0

我需要使用 Tkinter 创建一个需要大量文本字段条目的 GUI 应用程序。用户必须输入所有条目,然后使用“运行”按钮来执行特定功能。我想要做的是:包含一个功能,可以恢复用户从以前的会话中输入的所有文本数据,这样用户就不必每次都一次又一次地输入所有数据。我可以使用 entry_box.set('desired string') 选项,但这是静态的,不考虑以前的 GUI 会话。

例如,在以下脚本中:

#!usr/bin/env python
from Tkinter import *

# Define input retrieve function for application input
def retrieve_text():
    print(app_entry.get())

if __name__ == "__main__":

    # Create window (or form)
    app_win = Tk()

    # Create label
    app_label = Label(app_win, text="Enter value")
    app_label.pack()

    # Create entry box
    app_entry = Entry(app_win)
    app_entry.pack()

    # Create button
    app_button = Button(app_win, text="Print Value", command=retrieve_text)
    app_button.pack()

    # Initialize GUI loop
    app_win.mainloop()

我运行这个 GUI 并在输入框中输入“Value1”。然后,我想关闭窗口,重新运行它,默认情况下会出现“Value1”条目。每个会话应显示上一个会话的值(该值仅在第一次手动输入)。有没有办法做到这一点?

这将非常有用,因为在我的情况下,每次重新运行 GUI 时,用户只需更改大约 10 个字段中的一个或两个字段。

4

1 回答 1

2

在您的main中,使用 this 添加一个处理程序来关闭事件。

 app_win.protocol("WM_DELETE_WINDOW", handler)

现在,只要按下关闭按钮,handler就会调用该函数。

def handler():
    f = open("backup", "w")
    f.write(app_entry.get())
    f.close()
    app_win.quit()

现在,您可以修改程序以在脚本重新启动时读取文件并设置文本。

于 2012-02-13T15:52:39.123 回答