被告知使用 tkinter Checkbutton 的 select 方法。它不起作用。如果存储的设置为真,我该如何检查它?

Was told to use select method of tkinter Checkbutton. It doesn't work. How do I have it chacked if the stored setting is true?

我正在尝试为我的应用制作 GUI,但在尝试进行设置 Toplevel 时遇到了障碍。此 Toplevel 带有选项卡和设置按钮,它们以相同状态开始,它们各自的设置与上次 settings/defaults.

存储时相同

这是我目前遇到的异常:

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) ,但这里有一个解决方法:

  1. 首先将 BooleanVar() 分配给您的复选按钮:
var = BooleanVar()
....
fs_butt = Checkbutton(tab,variable=var,......) #same for ttk.Checkbutton(..) too
  1. 现在将变量的值设为True,设为select,False设为deselect:
if settings['Fullscreen'].get():
    var.set(True)

或者您使用的 ttk.Checkbutton 没有 select()deselect()