近几天,在编代码的时候,遇到了一个问题,就是如果我创建一个booleanvar,并且绑在一个check button控件上,正常情况下,应该是当check button被选中的时候booleanvar的值是True,反之则是False
这里试过把之前定义的布尔型变量变成全局变量,但是并不奏效
是什么原因导致了无法改变布尔型变量的值
以及如何解决这个问题
二编:对不起,因为截图问题导致的模糊,敬请谅解
问题出在你同时创建了两个Tk
实例,导致checkBtnVar
的状态无法响应。应该只创建一个Tk
实例,然后在其内部创建其他组件。
以下是修改后的代码:
from tkinter import *
root = Tk()
checkBtnVar = BooleanVar()
def printout():
print(checkBtnVar.get())
def createWindow():
root2 = Toplevel(root)
checkbutton = Checkbutton(
root2,
variable=checkBtnVar,
text='hit me',
command=printout
)
checkbutton.pack()
button = Button(
root,
text='create a window',
command=createWindow
)
button.pack()
root.mainloop()
我们只创建了一个Tk
实例,然后在createWindow
函数内部使用Toplevel
创建了一个新的窗口。checkBtnVar
变量的状态在不同窗口之间共享,我们只需要创建一个实例即可实现功能。