Один из способов - сохранить ссылки на связанные переменные в словаре.Вот пример:
import Tkinter as tk
data = {"Field 1": 1,
"Field 2": 2,
"Field 3": 3,
"Field 4": 4,
}
class SampleApp(tk.Tk):
def __init__(self, *args, **kwargs):
tk.Tk.__init__(self, *args, **kwargs)
self.variables ={}
for label in sorted(data.keys()):
self.variables[label] = tk.IntVar()
cb = tk.Checkbutton(self, text=label,
onvalue=data[label], offvalue=0,
variable=self.variables[label])
cb.pack(side="top", fill="x")
button = tk.Button(self, text="Submit", command=self.OnSubmit)
button.pack()
def OnSubmit(self):
for field in sorted(data.keys()):
print "Value for %s: %s" % (field, self.variables[field].get())
if __name__ == "__main__":
app = SampleApp()
app.mainloop()
Если вам не нравится создавать переменные на лету, потратив немного усилий, вы можете создать массив, с которым могут быть связаны все кнопки.Я привел пример того, как это сделать, в вопросе Как запустить код при изменении значения виджета Tkinter?