再会。
我已经设法使用以下代码从文本文件中加载字典:
def loadDictFile(data_folder):
critDict = json.loads(open(data_folder+'critDict3.txt').read())
print('json_data is', critDict)
return critDict
我可以使用以下代码创建一个 tkinter UI,其中的复选框根据字典值打开或关闭:
def makeUI(data_folder, critDict):
top = Tk()
varList=[]
for key, val in critDict.items():
myVar = IntVar()#create intVar for this checkbutton
varList.append(myVar) #append new intvar to a list
key = Checkbutton(top, text = key, command = update) #create new checkbutton with text
if val[0] == 1:
key.select()#turn on checkbutton if the dict value is 1
key.pack()
T = Text(top, height=2, width=30)#create text box
T.pack()
T.insert(END, val[1])#fill text box with comments from dict
text = T.get("1.0",'end-1c')#get text from text box
button=Button(top, text="Update", command=save)
button.pack()
top.mainloop()
运行函数的代码是:
data_folder = "C:\\Users\\NB\\Desktop\\checkbuttonTest\\"
critDict = loadDictFile(data_folder)
makeUI(data_folder, critDict)
字典文本文件 critDict3.txt 包含以下字符串:
{
"crit2": [
0,
"comments2"
],
"crit3": [
1,
"comments3"
],
"crit1": [
1,
"comments"
],
"crit4": [
1,
"comments4"
]
}
这一切似乎都很好。
但是我很难弄清楚如何获取任何更改的检查按钮(状态已被用户更改的按钮)的值并将它们保存回字典,以便可以将更改的值写回文本文件。
我认为我的问题是,由于我使用 for 循环创建了检查按钮,因此我不确定如何找到每个 intVar 的变量名称以获取正确检查按钮的检查按钮状态以放入正确的字典值列表...如果这是有道理的。
如果有人能指出我正确的方向,我将不胜感激。