默认检查按钮选择状态为True

时间:2014-04-03 19:18:40

标签: python tkinter

我想将复选框的初始状态设置为"选择"

在我的gui中,我有以下代码片段

testFrame = Frame(bigFrame)
testFrame.pack(fill=BOTH)
testLabel = Label(testFrame,
         text="Start from previously saved bias point?")
testLabel.pack(side=LEFT)
testChckbttn = Checkbutton(testFrame)
testChckbttn.pack(side=LEFT)
testchckbttn.select()

但是,当我引入变量" testvar"时,它不再有效。即无论如何,都会在开始时取消选中该框。

testFrame = Frame(bigFrame)
testFrame.pack(fill=BOTH)
testLabel = Label(testFrame,
         text="Start from previously saved bias point?")
testLabel.pack(side=LEFT)
testvar = IntVar()
testChckbttn = Checkbutton(testFrame, variable=testvar)
testChckbttn.pack(side=LEFT)
testchckbttn.select()

testvar搞砸了.select()?有没有办法坚持默认选择框?

[edit] - 我删除了不完整的代码。这是最简单的完整代码,可以为我重现错误。即此代码应该生成一个默认选中的复选框,而是取消选择它。

from Tkinter import Frame, Tk, Button, BOTH, LEFT, Label, \
                    Checkbutton, IntVar

class GUI(Frame):

    def __init__(self,parent):
        Frame.__init__(self,parent)

        self.parent = parent

        self.initUI()


    def initUI(self):
        self.parent.title("Test")
        self.pack(fill=BOTH,expand=1)

        bigFrame = Frame(self)
        bigFrame.pack(fill=BOTH,expand=1)

        testFrame = Frame(bigFrame)
        testFrame.pack(fill=BOTH)
        testLabel = Label(testFrame,
                                  text="Test")
        testLabel.pack(side=LEFT)
        testvar = IntVar()
        testChckbttn = Checkbutton(testFrame,variable=testvar)
        testChckbttn.pack(side=LEFT)
        testChckbttn.select()


def main():
    root = Tk()
    app = GUI(root)
    root.mainloop()

if __name__ == '__main__':
    main()

1 个答案:

答案 0 :(得分:2)

最好的解决方案是使testvar成为实例变量:

self.testvar = IntVar()
testChckbttn = Checkbutton(testFrame,variable=self.testvar)
testChckbttn.pack(side=LEFT)
testChckbttn.select()

实际上,testvar正在select()上更新(即,{(1}}在select()打印1之后),但由于某种原因,print testvar.get()对象不是'明显更新。

将其作为实例变量从长远来看会有所帮助,因为它现在可以在类的其他方法中使用,因为在testChckbttn中可能没有多大用处。方法