2015-08-13 4 views
0

У меня проблема с флажками tkinter в python.Python tkinter Checkboxes double check/uncheck

Я использую два checkButtons в макете сетки.

class GUI (Tk): 
...  
    def __init__(self, parent): 
     Tk.__init__(self, parent) 
     self.parent = parent 
     self.varA = 0 
     self.varB = 0 
     Checkbutton(self, text="Do A", variable=self.varA, command=self.onCheckButtonAPressed).grid(column=1, row=7, sticky='WESN') 
     Checkbutton(self, text="Do B", variable=self.varB, command=self.onCheckButtonBPressed).grid(column=2, row=4, sticky='WESN') 
... 

При нажатии на одну из них, переменная изменяется правильно, но с одним щелчком мыши на одном из них, как проверяются/снят, и я не знаю почему .. :(

+0

Если это будет в режиме Google, где можно ли активировать? – VRage

ответ

0

опция variable является reserverd для специальных дуговых объектов Tkinter. Также вы должны разделить inititalization вашего объекта и добавить его в свой LayoutManager (.grid()), так что у вас есть ссылка на ваш объект позже.

class GUI (Tk): 
    def __init__(self, **options): 
     Tk.__init__(self, **options) 
     self.varA = IntVar() 
     self.varA.set(0) 
     self.varB = IntVar() 
     self.varB.set(0) 
     checkbox_a = Checkbutton(self, text="Do A", variable=self.varA, command=self.onCheckButtonAPressed) 
     checkbox_a.grid(column=1, row=7, sticky='WESN') 
     checkbox_b = Checkbutton(self, text="Do B", variable=self.varB, command=self.onCheckButtonBPressed) 
     checkbox_b.grid(column=2, row=4, sticky='WESN') 

    def onCheckButtonBPressed(self): 
     print self.varB.get() 

    def onCheckButtonAPressed(self): 
     print self.varA.get() 
+0

self.varA.set (0) не требуется, поскольку значение по умолчанию равно 0. =) Thx для вашего ответа! :) Но это немного странно, потому что с одним флажком IntVar() не требуется ... – user2914938

+0

Вы также можете установить опцию 'onvalue = 0', поэтому его флажок« проверен », если intvar равен 0 – VRage