Как динамически создавать переменные tkinter

#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. Я использовал список для хранения переменных, и это сработало.