Python tkinter复选框双重检查/取消选中

时间:2015-08-13 08:15:59

标签: python checkbox tkinter

我在python中遇到了tkinter复选框的问题。

我在网格布局中使用了两个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')
...

当我点击其中一个时,变量被正确更改,但只需点击其中一个变量,两个都被选中/取消选中,我不知道为什么...... :(

1 个答案:

答案 0 :(得分:0)

为tkinter的特殊var对象重新保留variable选项。 此外,您应该拆分对象的初始化并将其添加到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()