Установка кнопки ttk.Check для включения или выключения, tristate - PullRequest
0 голосов
/ 24 января 2019

Я хочу установить виджет ttk.Checkbutton в третье состояние.Если у меня есть кнопка «Все», которая может установить или очистить набор кнопок, я хочу, чтобы она отображала «Выкл.», Если все кнопки проверки уже выключены, включена, если они все включены, и состояние «три», если есть микс.

Я нашел способ сделать это, используя состояние виджета, но есть ли способ просто использовать прикрепленный tk.xxVar?В предыдущем ответе упоминалось tristatevalue, к которому я не нашел способа доступа.

Приведенный ниже код настроен на циклическое переключение трех состояний при нажатии кнопки.Это работает путем изменения состояния на «альтернативный».

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

Спасибо за любые предложения.

Редактирует, чтобы исправить опечатки.

1 Ответ

0 голосов
/ 24 января 2019

Опция tristate доступна только для кнопок проверки tkinter, но не для кнопок проверки ttk.

Для кнопок проверки ttk вы можете получить третье состояние, установив его состояние в «alternate»:

the_checkbutton.state(['alternate'])

Я не знаю наверняка, поддерживают ли все темы ttk это третье состояние.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...