すべての入力ボックスの値をテキストファイルに保存し、このテキストファイルからデータを読み戻し、次のセッションの開始時にデフォルトで表示するTkinterGUIを作成しようとしています。次のデータを含むテキストファイルがあるとします。
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を機能させて、上に表示された入力ボックスのデータを編集すると、データが保存され(セッションを閉じるときに)、次に実行したときに自動的に表示されるようにします。
これをループで実行して、エントリウィジェットをハードコーディングせずに任意の数のエントリボックスを表示できるようにする方法はありますか?