Как создать несколько флажков из списка в цикле for в python tkinter

У меня есть список переменной длины и вы хотите создать флажок (с python TKinter) для каждой записи в списке (каждая запись соответствует машине, которая должна быть включена или выключена с помощью флажка -> изменить значение в словаре) ,

print enable {'ID1050': 0, 'ID1106': 0, 'ID1104': 0, 'ID1102': 0} 

(например, может быть любая длина)

теперь соответствующий код:

 for machine in enable: l = Checkbutton(self.root, text=machine, variable=enable[machine]) l.pack() self.root.mainloop() 

Этот код создает 4 флажка, но все они либо отмечены галочкой, либо не связаны друг с другом, а значения в тике enable не изменяются. Как решить? (Я думаю, что l не работает, но как сделать эту переменную?)

  • Как перенаправить stdout в текстовый виджет Tkinter
  • ImportError: нет модуля с именем «Tkinter»
  • Tkinter & PIL Изменить размер изображения на этикетке
  • Изменить тип события события для виджетов или использовать метод .trace_variable ()?
  • Каков наиболее эффективный способ получения итоговых отображаемых строк Tkinter Text widget после вставки?
  • Проблемы, связанные с перехватом подпроцесса в режиме реального времени
  • _tkinter.TclError: не удается найти пакет Tktable
  • PySide / PyQt обнаруживает, если пользователь пытается закрыть окно
  • 2 Solutions collect form web for “Как создать несколько флажков из списка в цикле for в python tkinter”

    «Переменная», передаваемая каждой контрольной кнопке, должна быть экземпляром Tkinter Variable – как есть, это только значение «0», которое передается, и это вызывает missbehavior.

    Вы можете создавать экземпляры Tkinter.Variable на том же самом для цикла, который вы создаете checkbuttons – просто измените свой код на:

     for machine in enable: enable[machine] = Variable() l = Checkbutton(self.root, text=machine, variable=enable[machine]) l.pack() self.root.mainloop() 

    Затем вы можете проверить состояние каждого флажка, используя метод get как в enable["ID1050"].get()

    Просто подумал, что я поделюсь своим примером для списка вместо словаря:

     from Tkinter import * root = Tk() users = [['Anne', 'password1', ['friend1', 'friend2', 'friend3']], ['Bea', 'password2', ['friend1', 'friend2', 'friend3']], ['Chris', 'password1', ['friend1', 'friend2', 'friend3']]] for x in range(len(users)): l = Checkbutton(root, text=users[x][0], variable=users[x]) print "l = Checkbutton(root, text=" + str(users[x][0]) + ", variable=" + str(users[x]) l.pack(anchor = 'w') root.mainloop() 

    Надеюсь, поможет

    Python - лучший язык программирования в мире.