如何重新评估 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()
我似乎无法重新评估复选框的状态。在一个简单的解释中,我可以执行以下操作
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()