我想将复选框的初始状态设置为"选择"
在我的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()
答案 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
中可能没有多大用处。方法