Tkinter离开事件仅在程序启动时触发吗?

问题描述

我正在尝试放置一个标签,以提示用户绑定到它的键盘快捷键,效果很好。

enter image description here

当我离开按钮时会出现问题。标签消失,但不完全消失。如果我尝试单击标签“使用过”的区域中的按钮,它将不会触发,表明它仍然存在。因此,我认为也许按钮已经内置了请假事件,从而将其提升到了最高级别。我决定尝试覆盖它,并基本上告诉按钮转到提示标签hit_button.bind("<Leave>",hit_button.lower(hit_button_keyhint)下方(或者更好,只是停留在该位置),但无济于事。我在做什么错了?

                                       fg=hit_button['fg'])
    hit_button_keyhint.place(relx=0.5,rely=0.85,anchor='center')
    hit_button.bind("<Leave>",hit_button.lower(hit_button_keyhint))

解决方法

您需要将一个函数传递给绑定,在这里您将执行一个函数。 (hit_button.lower(hit_button_keyhint)

为此,您应该使用lambda。

您可以在此处获得一些说明: Tkinter binding a function with arguments to a widget

但这应该可行:

hit_button.bind("<Leave>",lambda event,k=hit_button_keyhint:hit_button.lower(k)