кнопка проверки ttk по умолчанию не отключена

Нажмите здесь, чтобы увидеть текущие и ожидаемые результаты

У меня есть простая программа на Python, в которой я хочу снять флажок по умолчанию. Я хочу видеть это так же, как когда пользователь снимает флажок. Пожалуйста, дайте мне знать, как этого добиться.

from tkinter import *
from tkinter import ttk

def urgentReq():
    global box
    state = box.state()
    if(box.instate(['selected'])):        
        print ("--> Urgent: ",state)
    else:
        print ("--> Not Urgent:",state)

gui = Tk()
gui.title("GUI")
gui.geometry('200x150')

box = ttk.Checkbutton(gui, text ='Urgent Request', command=lambda: urgentReq())
box.grid(column=1, row=4, pady=40, sticky="N")
#write something here to unselect the box by default

person codehunt    schedule 15.06.2020    source источник
comment
Когда я запускаю ваш код, Checkbutton является изначально невыбранным.   -  person martineau    schedule 15.06.2020


Ответы (3)


Почему-то начальное состояние CheckButton = ('alternate',).

Здесь я нашел обходной путь: появляется при загрузке с черным ящиком. Если вы примените его к своему коду следующим образом, он, похоже, сработает:

checkVar = IntVar()
box = ttk.Checkbutton(gui, text ='Urgent Request', command=lambda: urgentReq(), variable=checkVar)
person Ronald    schedule 15.06.2020

Используйте метод .invoke(), но из того, что я читал в другом месте, также будет вызываться команда, если она связана. В экземпляре, который я пытался использовать, моя кнопка проверки не имела команды в качестве параметра, так что это отлично сработало для меня.

Надеюсь, что это помогает и удачи!

person Giovanni Fiorillo    schedule 20.01.2021

Я думаю, вы можете написать box.deselect(), чтобы отменить выбор. Редактировать: К сожалению, я только что проверил это, это не работает с ttk... Извините. :)

person Andrej    schedule 15.06.2020
comment
Я думаю, что Checkbutton объекты не имеют deselect() методов - person Anwarvic; 15.06.2020