Python 复选按钮外观在设置为 1 后不会更新



我有一个带有成员self.checkbutton(使用TkInter CheckButton)的类,在init函数中创建:

self.checkbutton = Checkbutton(self.frame, variable=self.value, command=self.get_entry_and_execute, onvalue="1", offvalue="0")

现在,我想在我的代码中设置它,而不是单击框架中的复选框。因此,从代码中的某个地方,我调用 setvalue("1") 调用此函数:

def setvalue(self, value):
if (value == "1"):
print "SELECTING CHECKBUTTON"
self.checkbutton.select()
#   self.checkbutton.set(value=1)

现在,当我这样做时,实际上,我可以看到调用了关联的"self.get_entry_and_execute"函数,它甚至改变了一些背景颜色。但是,复选按钮仍然未选中(即没有"V"符号的空字段)。 奇怪的是,当我添加命令时

self.checkbutton.set(value=1)

,代码抱怨:属性错误:复选框实例没有属性"set">但现在检查按钮确实被选中了!

我假设由于此错误,即使"set"函数不存在,python 也会将复选框置于正确的状态 (=1)。我的问题是:如何正确让 python 将"V"放在复选框内?(即类似于"重绘"函数的东西)。

根据你的代码,self.value是一个变量类的实例,所以你需要做的就是用self.value.set(value=1)替换self.checkbutton.set(value=1)

最新更新