默认复选按钮选中状态为真
我想把复选框的初始状态设置为“选中”
在我的图形界面中,有一段代码可以正常工作
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()吗?有没有办法确保复选框默认是选中的?
[编辑] - 我已经删除了不完整的代码。这是我用来重现错误的最简单完整代码。也就是说,这段代码应该产生一个默认选中的复选框,但实际上它是未选中的。
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 个回答
2
最好的解决办法是把 testvar
变成一个实例变量:
self.testvar = IntVar()
testChckbttn = Checkbutton(testFrame,variable=self.testvar)
testChckbttn.pack(side=LEFT)
testChckbttn.select()
现在,testvar
在调用 select() 时会被更新(也就是说,调用 print testvar.get()
在 select() 之后会打印出 1),但不知为什么 testChckbttn
这个对象没有明显更新。
把它变成实例变量从长远来看会更有帮助,因为这样它就可以在这个类的其他方法中使用,而在 initUI
方法中可能用处不大。