tkinter проверка if состояния status у button
Возник такой вопрос. Есть функция, внутри которой перед выполнением должна происходить проверка с помощью If на status button. То есть, если кнопка активна: 'normal' или неактивна: 'disable'. Функция выглядит так:
def add():
if Button_add_games['state'] == 'normal':
Вроде всё логично, если у кнопки статус такой, делаем дела. Однако, по неведомой мне причине, он почему-то пропускает это условие If. Подскажите как можно исправить?
Допустим пример кода. Условие if не работает.
def add():
if Button_add_games2['state'] == 'disable':
label_Name = ttk.Label(app, text='Название')
label_Name.place(x=10, y=90)
Button_add_games1 = ttk.Button(app, text='Внесение 1', state='normal', command=add)
Button_add_games1 .place(width=130, height=60, x=250, y=15)
Button_add_games2 = ttk.Button(app, text='Внесение 2', state='disable', command=add)
Button_add_games2.place(width=130, height=60, x=380, y=15)
Ответы (1 шт):
Если добавить print(type(Button_add_games2['state'])), то будет видно, что там лежит не строка, а объект типа <class '_tkinter.Tcl_Obj'>. Из-за этого условие и не выполняется - этот объект не равен строке "disable".
Проверка будет срабатывать, если сконвертировать этот объект в строку:
def add():
print(type(Button_add_games2['state'])) # <class '_tkinter.Tcl_Obj'>
print(str(Button_add_games2['state'])) # disable
if str(Button_add_games2['state']) == 'disable':
label_Name = ttk.Label(app, text='Название')
label_Name.place(x=10, y=90)