Лично я не использую tk.IntVar () / tk.StringVar () и т. Д., Но, возможно, я должен.Возможно, это не лучший способ сделать это, но я думаю, что это довольно легко понять.не стесняйтесь критиковать и говорить мне, что на самом деле плохо и не пифонично, так что я могу улучшить себя (я все еще новичок).
я делаю интегратор, затем я создаю свои кнопки проверки в цикле и вобратный вызов Я передаю в параметре значение checkbutton и итератора.
...
self.listeColonneFile1 = []
self.chbFile1 = []
indice = 0
for column in dfFile1.columns:
btn = ttk.Checkbutton(self.frameCheckButtonsFile1,
text=column,
command=lambda i=indice, col=column: self.callback_onCheck(col, i)
)
self.chbFile1.append(btn)
self.chbFile1[indice].grid(row = indice, column = 0, sticky="nw")
self.chbFile1[indice].state(['!alternate'])
indice += 1
В моем обратном вызове у меня есть список всех checkButtons, которые проверяются (ну, не ChB, а его текст или его значение):
def callback_onCheck(self, column, indice):
if self.chbFile1[indice].instate(['selected']) == True:
self.listeColonneFile1.append(column)
else:
self.listeColonneFile1.remove(column)
PS: dfFile1 - это DataFrame для панд, см. документ