默认选中按钮选中状态为Tru

2024-09-30 00:31:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我想将复选框的初始状态设置为“选定”

下面是我的图形用户界面代码片段

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”时,它不再有效。一、 e.不管怎样,在开始时都不选中该框。在

^{pr2}$

testvar是否出错。select()?有没有一种方法可以坚持默认选中该框?在

[编辑]-我已经删除了不完整的代码。下面是最简单的完整代码,它为我重现了错误。一、 这个代码应该生成一个默认选中的勾选框,但实际上它没有被选中。在

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()

Tags: 代码selfleftfillframesidelabelpack
1条回答
网友
1楼 · 发布于 2024-09-30 00:31:26

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

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

实际上,testvar正在select()上更新(即在select()打印1之后print testvar.get()),但由于某些原因,testChckbttn对象没有明显更新。在

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

相关问题 更多 >

    热门问题