我似乎无法重新评估复选框的状态。在一个简单的探索中,我可以做以下
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()
这会将“检查”按钮设置为“已选中”' state,然后运行if
语句,因为它已被选中。但是,如果我要取消选中该复选框,则不会重新评估复选框的状态并运行elif
语句。我已经查看了root.update()
或root.update_idletasks
等内容,但我相当确定这不是我正在寻找的内容。
感谢您的帮助!
作为旁注,我在Python 3.x
上答案 0 :(得分:0)
您的if/else
仅在开始时执行一次。如果您必须在运行程序期间执行某些操作,请将功能分配给Checkbutton
ttk.Checkbutton( ..., command=function_name)
并在单击checkbutton
时执行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()