我正在尝试创建一个 Tkinter GUI,它将所有输入框值保存到一个文本文件中,然后从该文本文件中读回数据并在下一个会话开始时默认显示它们。假设我有一个包含以下数据的文本文件:
one
two
three
使用以下代码:
#!usr/bin/env python
from Tkinter import *
class Tracker(Tk):
def __init__(self, var1, var2, var3):
Tk.__init__(self)
# Create label
app_label = Label(self, text="Enter value")
app_label.pack()
self.entry1 = StringVar()
self.entry1.set(var1)
ent1 = Entry(self,textvariable=self.entry1)
ent1.pack()
self.entry2 = StringVar()
self.entry2.set(var2)
ent2 = Entry(self,textvariable=self.entry2)
ent2.pack()
self.entry3 = StringVar()
self.entry3.set(var3)
ent3 = Entry(self,textvariable=self.entry3)
ent3.pack()
# Track 'delete window' event
self.protocol("WM_DELETE_WINDOW", self.handler)
def handler(self):
f = open("backup.txt", "w")
f.write(self.entry1.get()+'\n'+self.entry2.get()+'\n'+self.entry3.get())
f.close()
self.destroy()
if __name__ == "__main__":
t = open("backup.txt")
var = t.readlines()
Text1 = var[0]
Text2 = var[1]
Text3 = var[2]
# Initialize GUI
app = Tracker(Text1, Text2, Text3)
app.mainloop()
我得到以下框:
我的代码应该从文本文件中读取数据并显示带有文本文件中预定义值的输入框。但它的表现很有趣。它没有正确保存数据
我希望这个 GUI 能够正常工作,以便当我在上面显示的输入框中编辑数据时,它会被保存(在关闭会话时)并在我下次运行它时自动显示。
有没有办法在循环中执行此操作,以便我可以显示任意数量的输入框而不必对输入小部件进行硬编码?