Очень простой способ исправить это - использовать список и просто добавить каждый Checkbutton
в список.
Например:
self.diagramVars = []
for element in self.listdiagram.dict_diagrams :
diagramVar = IntVar()
diagram = Checkbutton(self.window, text=element, variable=diagramVar, onvalue=1, offvalue=0)
diagram.pack(side = BOTTOM)
self.diagramVars.append(diagramVar)
self.validate = Button(self.window, text="Validate", command=self.validateCallBack, width=15, height=3)
self.validate.pack(side = BOTTOM)
Q:На данный момент я просто хочу напечатать состояние каждой кнопки проверки, когда я нажимаю кнопку подтверждения, но мой следующий шаг, например, если у меня есть self.diagramVars = [1, 0, 0], так что первый checkButton проверен, и поэтому я хочузапустить другую функцию с именем (или текстом) проверенного checkButton в параметре, я не знаю, ясно ли я?
Я считаю, что это цикл for, который создает словарь сelement
в качестве ключа будет подходящим решением (если element
может использоваться в качестве опции text=element
, тогда его можно использовать в качестве ключа):
self.diagramVars = {}
for element in self.listdiagram.dict_diagrams :
diagramVar = IntVar()
diagram = Checkbutton(self.window, text=element, variable=diagramVar, onvalue=1, offvalue=0)
diagram.pack(side = BOTTOM)
self.diagramVars[element] = diagramVar
self.validate = Button(self.window, text="Validate", command=self.validateCallBack, width=15, height=3)
self.validate.pack(side = BOTTOM)
Когда высоздайте этот словарь, чтобы получить значение CheckButton, вы будете использовать строку diagramVars[element].get()
, которая будет обращаться к состоянию "реального времени" CheckButton