在Tkinter中使用上一个会话的输入框数据
我需要用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()
现在,你可以修改你的程序,让它在脚本重新启动时读取文件并设置文本。