<p>这里有一个可运行的示例,我认为它展示了如何完成您所要求的一切。它假定<code>modules.txt</code>文件包含以下格式的数据,其中每一行由模块名称以及是否选中组成</p>
<pre class="lang-none prettyprint-override"><code>Mod1,0
Mod2,0
Mod3,0
</code></pre>
<p>文件中的数据用于创建<code>Checkbutton</code>列表(每个模块一个),并初始设置为文件中指示的当前状态</p>
<p>以下是示例代码:</p>
<pre><code>from tkinter import *
import tkinter.messagebox as box
dataFilename = "modules.txt"
moduleChecks = []
def ReadModules():
with open(dataFilename, "r") as file:
for line in (line.strip() for line in file):
moduleName, moduleState = line.split(',')
moduleChecks.append((moduleName, int(moduleState)))
print('read:', moduleChecks)
def SaveChanges():
print('writing:', moduleChecks)
with open(dataFilename, "w") as file:
for checkButton in moduleCheckbuttons:
moduleName = checkButton.cget('text')
moduleState = checkButton.var.get()
file.write(','.join((moduleName, str(moduleState))) + '\n')
ReadModules()
modulesMain = Tk()
moduleCheckbuttons = []
# Create a Checkbutton for each module based on moduleChecks values.
for moduleName, moduleState in moduleChecks:
intVar = IntVar(value=moduleState)
checkButton = Checkbutton(modulesMain, text=moduleName, variable=intVar)
checkButton.var = intVar # Attach reference to variable.
checkButton.grid()
moduleCheckbuttons.append(checkButton)
saveButton = Button(modulesMain, text="Save Changes", command=SaveChanges)
saveButton.grid()
modulesMain.mainloop()
</code></pre>