Я обнаружил, что при использовании привязок событий <Enter>
и <Leave>
к кнопке для изменения ее цвета, когда указатель мыши находится над ним, он, похоже, больше не работает после первого нажатия на саму кнопку.
Пример сценария:
from tkinter import Tk,Button
class App:
def __init__(self):
root=Tk()
root.option_add('*Background','black')
root.option_add('*Foreground','white')
root.option_add('*Button.activeForeground','white')
root.option_add('*Button.activeBackground','black')
self.button=Button(root,text='Hello World')#,bg='black',fg='white')#,activebackground='white',activeforeground='black')
self.button.pack(fill='both',expand=True,padx=10,pady=10)
root.bind_class('Button','<Enter>',self.enter)
root.bind_class('Button','<Leave>',self.leave)
root.mainloop()
def enter(self,event):
print('entered')
self.button.config(bg='red')
def leave(self,event):
print('left')
self.button.config(bg='black')
if __name__=='__main__':
App()
Все, что я пробовал до сих пор:
- изменить вариант option_add на
bg
и так далее при инициализации - изменить bind_class на bind
- полностью удалить пользовательский bg / fg / activebg / activefg (за исключением
self.enter
и self.leave
по понятным причинам - добавить
print
, чтобы проверить, если self.enter
и self.leave
все еще вызывают (они делают)
Но, похоже, ничего из этого не сработало. Когда я сделал первое, что было в списке, кнопка фактически даже не изменилась на заданную. BG после нажатия.
ОС: Windows 10 Python: 3,7
Заранее спасибо.