为了账号安全,请及时绑定邮箱和手机立即绑定

将 ttk.Checkbutton 设置为既不开也不关,三态

将 ttk.Checkbutton 设置为既不开也不关,三态

12345678_0001 2021-10-19 16:52:10
我想将 ttk.Checkbutton 小部件设置为其第三个状态。如果我有一个可以设置或清除一组检查按钮的“全部”检查按钮,我希望它在所有检查按钮都已关闭时显示为关闭,如果它们都打开则显示为开启,如果有混合则显示为三态。我找到了一种使用小部件状态的方法,但是有没有一种方法可以简单地使用附加的 tk.xxVar?以前的答案提到了tristatevalue我还没有找到访问方法。下面的代码设置为在按下按钮时在 3 个状态之间循环。它的工作原理是将状态更改为“交替”。import tkinter as tkfrom tkinter import ttkroot=tk.Tk()root.geometry("+50+50")var=tk.IntVar()var.set(0)current_state=tk.StringVar()text=[' Checkbutton: Off ', ' Checkbutton: On ', ' CB to Third State ']def label_update():current_state.set(text[var.get()])cb=ttk.Checkbutton(root, variable=var, text='Test Box', command=label_update)cb.grid()seq=[1,2]def tick():    """ Sets var (tk.IntVar) to 0, 1, 2 in sequence for each tick """    try:        var.set(seq[var.get()])        if var.get()>1: cb.state(['alternate'])  # alternate on    except IndexError:        cb.state(['!alternate'])                 # alternate off        var.set(0)                               # reset count    label_update()ttk.Button(root, text=" Click to cycle through states ", command=tick).grid()ttk.Label(root, textvariable=current_state).grid()label_update()root.title("Checkbutton Issue")root.mainloop()感谢您的任何建议。编辑以更正错别字。
查看完整描述

1 回答

?
慕少森

TA贡献2019条经验 获得超9个赞

tristate选项仅适用于 tkinter 复选按钮,不适用于 ttk 复选按钮。

对于 ttk 复选按钮,您可以通过将其状态设置为“交替”来获得第三个状态:

the_checkbutton.state(['alternate'])

我不确定是否所有 ttk 主题都支持这第三种状态。


查看完整回答
反对 回复 2021-10-19
  • 1 回答
  • 0 关注
  • 268 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信