问题描述
我正在尝试为我的应用制作GUI,但是在尝试进行顶级设置时遇到了障碍。此顶层具有标签和设置按钮,它们以相同的状态开始,其各自的设置从最后的设置/默认值开始存储。
这是我目前遇到的例外情况:
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Program Files\python39\lib\tkinter\__init__.py",line 1885,in __call__
return self.func(*args)
File "KMIU 4\kmiu_dv7.pyw",line 38,in settings
sett.display(main)
File "KMIU 4\bk\settings.py",line 54,in __init__
self.windowsettings(tab2)
File "KMIU 4\bk\settings.py",line 23,in windowsettings
if settings['Fullscreen'].get(): fs_butt.select()
AttributeError: 'Checkbutton' object has no attribute 'select'
下面是引起问题的代码:
def windowsettings(self,tab):
global settings
text = Label(tab,text ="sample text")
text.grid(columnspan = 2)
fs_butt = Checkbutton(
tab,text="Fullscreen",command=lambda: settings['Fullscreen'].set(not settings['Fullscreen'].get()))
print(settings)
fs_butt.grid(row=1)
if settings['Fullscreen'].get(): fs_butt.select()
解决方法
对于我来说,在使用tk.Checkbutton
的代码中,select()
可以正常工作,并且我看到其他人也遇到了同样的问题,不确定是什么原因造成的(也许您使用ttk.Checkbutton
),但是这是一种解决方法:
- 首先为您的复选框分配一个
BooleanVar()
:
var = BooleanVar()
....
fs_butt = Checkbutton(tab,variable=var,......) #same for ttk.Checkbutton(..) too
- 现在将变量的值设置为
True
进行选择,并选择False
取消选择:
if settings['Fullscreen'].get():
var.set(True)
或者您正在使用的ttk.Checkbutton
没有select()
和deselect()