#python #tkinter
Вопрос:
Динамически создаваемые переменные Tkinter не работают должным образом в checkbutton
of menu
. Они отображают неправильное изображение, как и предполагалось.
Вот мой код:
def checkbutton(self,index,var=None):
self.popup_menu.add_checkbutton(label=self.btns[index]['text'], command = lambda : self.menu(index) , variable=IntVar().set(1))
Я использую прямой метод variable=IntVar().set(1)
. Я также попытался сделать переменную такой :
currentVar=IntVar()
currentVar.set(1)
Но я столкнулся с той же проблемой.
Ответ №1:
Сначала variable=IntVar().set(1)
назначит None
, результат set(1)
variable
опции to. Вторая динамически созданная переменная будет собрана после завершения функции.
Вам нужно создать переменную экземпляра:
def checkbutton(self,index,var=None):
var1 = IntVar(value=1)
self.popup_menu.add_checkbutton(label=self.btns[index]['text'], command=lambda: self.menu(index), variable=var1)
# self.varlist should be already created in __init__()
self.varlist.append(var1)
Комментарии:
1. Он просто выполняет работу для последней переменной, созданной динамически, и выдает ту же проблему для остальных.
2. Затем вам нужно использовать список для хранения переменных.
3. Я использовал список для хранения переменных, и это сработало.