我想将 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 主题都支持这第三种状态。
添加回答
举报
0/150
提交
取消