如何重新评估 tkinter 中复选按钮的状态

How to re-evaluate state of checkbutton in tkinter

我似乎无法重新评估复选框的状态。在一个简单的解释中,我可以执行以下操作

import tkinter
from tkinter imprt ttk
root = Tk()
ck = ttk.Checkbutton(root, text='Checkbox')
ck.state(['!alternate'])
ck.state(['selected'])

if ck.instate(['selected']):
    # do something
elif ck.instate(['!selected']):
    # do something else

root.mainloop()

这会将复选按钮设置为 'selected' 状态,然后 运行 执行 if 语句,因为它已被选中。但是,如果我要取消选中该复选框,它不会重新评估复选框的状态和 运行 elif 语句。我看过 root.update()root.update_idletasks 之类的东西,但我很确定这不是我要找的东西。

感谢您的帮助!

附带说明一下,我在 Python 3.x

您的 if/else 仅在开始时执行一次。如果您必须在 运行 程序期间执行某些操作,则将函数分配给 Checkbutton

 ttk.Checkbutton( ..., command=function_name)

点击勾选按钮时会执行

import tkinter as tk
from tkinter import ttk

# --- functions ---

def clicked():
    if ck.instate(['selected']):
        print('selected')
    elif ck.instate(['!selected']):
        print('not selected')

# --- main ---

root = tk.Tk()

ck = ttk.Checkbutton(root, text='Checkbox', command=clicked)
ck.pack()

root.mainloop()