在Tkinter中使用上一个会话的输入框数据

0 投票
1 回答
2498 浏览
提问于 2025-04-17 12:58

我需要用Tkinter创建一个图形界面应用,这个应用需要用户输入很多文本框的内容。用户需要输入所有信息,然后点击一个“运行”按钮来执行特定的功能。我想要实现的功能是:能够恢复用户在上一次使用时输入的所有文本数据,这样用户就不用每次都重新输入一遍。

我可以使用entry_box.set('想要的字符串')这个选项来设置文本框的内容,但这个方法是静态的,无法记住之前的会话数据。

举个例子,在下面的脚本中:

#!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()

我运行这个图形界面,并在输入框中输入“值1”。然后,我想关闭窗口,再次运行它时,输入框中默认显示“值1”。每次会话都应该显示上一次会话的值(这个值只需要在第一次手动输入)。有没有办法做到这一点?

这样做会非常有用,因为在我的情况下,用户每次重新运行图形界面时,只需要修改大约10个字段中的一两个。

1 个回答

3

在你的 main 函数里,添加一个处理关闭事件的功能,使用这个代码。

 app_win.protocol("WM_DELETE_WINDOW", handler)

现在,每当按下关闭按钮时,handler 这个函数就会被调用。

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

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

撰写回答