我正在为我的工作开发一个 Windows 应用程序,我对 Python 的了解非常有限,所以我不知道如何解决这个问题:
我想让框架内的每个条目小部件在其复选按钮未选中时禁用,并在其复选按钮被选中时启用,并默认将它们全部选中。我尝试了这段代码,我从本教程中获取了它的一部分,但它没有按预期工作。
from tkinter import *
class Principal():
def __init__(self):
self.root= Tk()
self.root.geometry('800x800')
self.prixArticlesFrame = LabelFrame(self.root, text="Prix des articles", width=2000)
self.prixArticlesFrame.place(relx = 0.75, rely = 0.15,anchor = N)
self.DefautArticlesCheckButton={
"Deblai" : IntVar(),
"Remblai" : IntVar(),
"Blocage" : IntVar(),
"Beton de propreté": IntVar(),
"Beton armé": IntVar(),
"Acier à haute adherence": IntVar(),
"Joint de dilatation": IntVar(),
}
for index, (key, value) in enumerate(self.DefautArticlesCheckButton.items()):
self.cur_check = Checkbutton(self.prixArticlesFrame,
text=key,variable=self.DefautArticlesCheckButton[key], onvalue=1,
offvalue=0,command=self.ArticlesEntryState)
self.cur_check.grid(row=index, column=0, padx=10, pady=10, sticky="W")
self.DefautArticlesEntries={
"Deblai" : StringVar(),
"Remblai" : StringVar(),
"Blocage" : StringVar(),
"Beton de propreté": StringVar(),
"Beton armé": StringVar(),
"Acier à haute adherence": StringVar(),
"Joint de dilatation": StringVar(),
}
for index, (key, value) in enumerate(self.DefautArticlesEntries.items()):
self.cur_entry = 'DefautArticlesEntries' +key
self.cur_entry=Entry(self.prixArticlesFrame,width=10,
textvariable=self.DefautArticlesEntries[key])
self.cur_entry.grid(row=index,column=2,padx=10)
self.cur_entry.config(state=NORMAL)
self.root.mainloop()
def ArticlesEntryState(self):
for index, (key, value) in enumerate(self.DefautArticlesCheckButton.items()):
if self.DefautArticlesCheckButton[key].get() == 1:
self.cur_entry.grid(row=index,column=2,padx=10)
self.cur_entry.config(state=NORMAL)
elif self.DefautArticlesCheckButton[key].get() == 0:
self.cur_entry.config(state=DISABLED)
app = Principal()
我做错了什么?谢谢