如何重新评估tkinter

时间:2017-02-05 04:53:27

标签: python-3.x checkbox tkinter ttk

我似乎无法重新评估复选框的状态。在一个简单的探索中,我可以做以下

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

1 个答案:

答案 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()