如何在Tkinter中悬停后更改多个小部件的颜色?

时间:2013-01-10 18:30:12

标签: python colors background widget tkinter

我正在尝试创建一个脚本,它会在悬停后更改小部件的背景和前景色。

from Tkinter import *

root=Tk()

Hover1=Button(root,text="Red color", bg="white")
Hover1.pack()

Hover2=Button(root,text="Yellow color", bg="white")
Hover2.pack()

Hover1.bind("<Enter>",Hover1.configure(bg="red"))
Hover1.bind("<Leave>",Hover1.configure(bg="white"))

Hover2.bind("<Enter>",Hover2.configure(bg="yellow"))
Hover2.bind("<Leave>",Hover2.configure(bg="white"))

root.mainloop()

但当我悬停在任何按钮上时,没有任何反应,它们会保持白色。我知道我可以使用一个函数,但每个小部件都有两个函数(1个用于, 1 for)。我想创建一个单独的函数,它将重新着色我悬停的小部件,并解释为什么这个脚本没有做我想做的事情。

我希望我能很好地描述我的问题。谢谢你的每一个答案。

PS:我想避免上课。

mountDoom

1 个答案:

答案 0 :(得分:3)

您需要提供可调用的函数来绑定到事件。相反,您正在调用函数并传递其结果。修复如下:

Hover1.bind("<Enter>", lambda event, h=Hover1: h.configure(bg="red"))