Форум сайта python.su
Возникла проблема. Написал простую программку. Есть две кнопки, одна выводит текст “Hello”, вторая кнопка делает статус первой кнопки “disabled”. При этом первая кнопка становится не активной, серой, но при нажатии на нее все равно происходит вывод текста “Hello”. Почему она не выключается?
Вот простой код
# -*- coding: utf-8 -*- from Tkinter import * def Nul1(event): print('Hello') def Nul2(event): btn1.configure(state='disabled') root = Tk() root.title( 'Observer' ) root.geometry( '400x400' ) btn1 = Button(root, text="Кнопка 1", #width=15,height=5, bg="white",fg="black",font="Arial 12") btn2 = Button(root, text="Кнопка 2", #width=15,height=5, bg="white",fg="black",font="Arial 12") btn1.bind("<Button-1>", Nul1) btn1.pack() btn2.bind("<Button-1>", Nul2) btn2.pack() root.mainloop()
Офлайн
.bind
Если хотите, чтобы disabled отрабатывал в полном объеме, а не только менял внешний вид, то используйте command вместо bind.
Если нужен обязательно .bind, то проверяйте внутри колбека, что кнопка активная:
def Nul1(event): if event.widget["stare"] != "disabled": print('Hello')
Офлайн
Спасибо, так и сделал. Почему-то не додумался проверять статус кнопки. А подскажите еще, пожалуйста. У стандартного окна Ткинкера красуется его красный значок в вернем левом углу. А как его заменить на свой? Каким способом?
Офлайн
root.iconbitmap('<Путь к иконке>')
Офлайн
DemianWolf
Где-то некрономикон завалялся?
Офлайн