Способ обработки флажков состоит в том, чтобы связать каждое поле с переменной, которая отражает, установлен флажок или нет.
Для массива флажков удобно хранить эти переменные в списке. Я бы сделал это, создав пустой список, а затем добавляю переменные.
В функции test()
я использую перечисление в цикле for, поскольку это рекомендуемый способ создания индекса списка.
from tkinter import *
class Error(Frame):
def __init__(self, master):
super(Error,self).__init__(master)
self.box_list = [] # List to holld checbox variables
self.grid()
self.Widgets()
def Widgets(self):
for i in range(5):
var = BooleanVar() # Create variable to associate with box
cb = Checkbutton(self, text="%d"%(i,))
cb.grid(row=i, sticky=W)
cb.configure(variable=var)
self.box_list.append(var) # Append checkbox variable to list
self.button = Button(self, text = "set", command = self.test)
self.button.grid(row=5, sticky=W)
def test(self):
for i, var in enumerate(self.box_list):
if i == 0 or i == 2 or i == 4:
var.set(True)
Window = Tk()
Tool = Error(Window)
Window.mainloop()