设置ttk.复选按钮既不开也不关,崔斯

2024-04-16 18:57:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我想定一个目标ttk.复选按钮小部件的第三种状态。如果我有一个'所有'检查按钮,可以设置或清除一组检查按钮,我希望它显示,如果所有的检查按钮已经关闭,打开,如果他们都打开和三态,如果有一个混合。你知道吗

我已经找到了一种使用小部件状态的方法,但是有没有一种方法可以简单地使用附加的第二十五条?前面的回答提到了我还没有找到访问方法的tristatevalue。你知道吗

按下按钮时,下面的代码设置为在3种状态之间循环。它的工作原理是将状态更改为“alternate”。你知道吗

import tkinter as tk
from tkinter import ttk

root=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()

谢谢你的建议。你知道吗

编辑以更正打字错误。你知道吗


Tags: 方法textvar状态updateroot按钮label
1条回答
网友
1楼 · 发布于 2024-04-16 18:57:10

tristate选项仅适用于tkinter checkbuttons,而不适用于ttk checkbuttons。你知道吗

对于ttk checkbuttons,您可以通过将其状态设置为“alternate”来获得第三个状态:

the_checkbutton.state(['alternate'])

我不知道是否所有的ttk主题都支持第三种状态。你知道吗

相关问题 更多 >