我一直在尝试使用鼠标悬停事件来更改Tkinter中的butten小部件的背景颜色。我在网上得到了一些简单的代码,适用于文本,但颜色不合适。这是:
from Tkinter import *
root - Tk()
b = Button(root, text='foo')
b.pack()
def enterB(event):
b.configure(text='bar', background='red')
def leaveB(event):
b.configure(text='foo')
b.bind('<Enter>', enterB)
b.bind('<Leave>', leaveB)
root.mainloop()
当我将鼠标放在按钮上时,文本会变为“bar”,但背景颜色会保持灰色。当我的鼠标离开按钮上方的区域时,背景颜色变为红色,文本变为“foo”。这与应该发生的事情相反。
如果我在leaveB函数的b.configure语句中添加background ='blue',其余部分保持不变,则保留按钮会使按钮保持蓝色,并且它永远不会是红色。
谁能告诉我发生了什么?
感谢。
答案 0 :(得分:3)
首先,我猜这是第2行的拼写错误,它应该是root = Tk()
该程序适用于我,除了从按钮上移除鼠标后,背景保持red
的行为。可以通过稍微修改leaveB
函数来更改,如下所示:
def leaveB(event):
b.configure(text="foo", background="SystemButtonFace")
如果您在Windows上,"SystemButtonFace"
是默认按钮面部颜色
答案 1 :(得分:1)
我遇到了同样的问题(实际上,除非你用鼠标离开它,否则点击后按钮颜色不会改变,我会感到困扰)。解决方案是设置activebackground颜色。在我的理解中,这是当鼠标悬停在按钮上时显示的颜色(参见http://www.tutorialspoint.com/python/tk_button.htm)
所以我做的是:
def enterB(event):
b.configure(text='bar', background='red')
b.configure(activebackground='red');
这样,当鼠标悬停在按钮上时,按钮已经变为红色。当然,您必须重置leaveB函数中的颜色,以便在您离开按钮后将其更改为灰色。
答案 2 :(得分:0)
如果您使用的是Mac,则无法更改按钮的背景颜色或浮雕样式。但是,您可以更改高亮背景颜色。这是对mac的tk的限制,因此我建议使用wx。