奇怪的鼠标移动行为

2024-09-30 05:33:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在尝试让一个鼠标悬停事件来改变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”。这与应该发生的情况正好相反。在

如果我把background='blue'放在leaveB函数的b.configure语句中,并保持其余内容不变,则保留按钮将使按钮保持蓝色,而永远不会变为红色。在

有人能告诉我发生了什么事吗?在

谢谢。在


Tags: text文本eventfoobind颜色tkinterconfigure
3条回答

如果你在Mac上,你不能改变按钮的背景色或浮雕样式。但是,您可以更改高亮背景色。这是tk在mac上的一个限制,因此我推荐wx。在

我也有同样的问题(事实上,我很担心按钮的颜色在点击后没有改变,除非你把它放在鼠标里)。解决方案是设置activebackground颜色。在我的理解中,这是鼠标在按钮上方时显示的颜色(参见http://www.tutorialspoint.com/python/tk_button.htm

所以我所做的是:

def enterB(event):
   b.configure(text='bar', background='red')
   b.configure(activebackground='red');

这样,当鼠标移到按钮上时,按钮已经变为红色。当然,你必须重置leaveB函数中的颜色,使其在你离开按钮后变回灰色。在

首先,我想这是第2行的错误,应该是root = Tk()


这个程序对我来说工作正常,除了从按钮上移除鼠标时背景保持red的动作。可以通过稍微修改leaveB函数进行更改,如下所示:

def leaveB(event):
    b.configure(text="foo", background="SystemButtonFace")

其中"SystemButtonFace"是默认的按钮面颜色(如果您在Windows上)

相关问题 更多 >

    热门问题