Wxpython wxEVT_ENTER_窗口不';不要改变按钮的背景色

Wxpython wxEVT_ENTER_窗口不';不要改变按钮的背景色,wxpython,Wxpython,我希望我的代码在鼠标光标位于按钮上方时将按钮背景颜色更改为“黄色”,在鼠标光标离开按钮时将按钮背景颜色更改为绿色 使用wx.EVT_ENTER_WINDOW将按钮背景色更改为“黄色”,使用wx.EVT_LEAVE_WINDOW将背景色更改为绿色 下面是包含一个框架和一个按钮的简单代码。注意,当鼠标位于按钮上方时,背景颜色没有变为黄色,但当鼠标光标离开按钮时,背景颜色变为绿色。所以我添加了SetLabel,当光标位于按钮上方时显示“INSIDE”,以查看EVT_ENTER_窗口是否被触发。当我运行

我希望我的代码在鼠标光标位于按钮上方时将按钮背景颜色更改为“黄色”,在鼠标光标离开按钮时将按钮背景颜色更改为绿色

使用wx.EVT_ENTER_WINDOW将按钮背景色更改为“黄色”,使用wx.EVT_LEAVE_WINDOW将背景色更改为绿色

下面是包含一个框架和一个按钮的简单代码。注意,当鼠标位于按钮上方时,背景颜色没有变为黄色,但当鼠标光标离开按钮时,背景颜色变为绿色。所以我添加了SetLabel,当光标位于按钮上方时显示“INSIDE”,以查看EVT_ENTER_窗口是否被触发。当我运行代码时,发现当光标位于按钮上时,会显示INSIDE,因此EVT_ENTER_窗口会被触发,但背景颜色不会改变。为什么按钮背景色不变

import wx
def onMouseOverButton(event):
    btn.SetBackgroundColour("yellow")
    btn.SetLabel("INSIDE")

def onMouseLeaveButton(event):
    btn.SetBackgroundColour("green")
    btn.SetLabel("OUTSIDE")

app = wx.App()
win = wx.Frame(None,size=(410,335))
win.Show()
btn = wx.Button(win,  pos=(50,50))
btn.Bind(wx.EVT_ENTER_WINDOW,onMouseOverButton)
btn.Bind(wx.EVT_LEAVE_WINDOW,onMouseLeaveButton)
app.MainLoop()

谢谢

您没有说明您的操作系统或wx的版本。在linux上,wxpython版本4.1.1您的代码工作正常。感谢您的反馈。使用wxPython版本4.1.1和Windows1020H2构建19042.928。很高兴知道它工作正常。有趣的是,如果鼠标左键按下,按钮会变成黄色,只要按住鼠标左键,按钮就会保持黄色。这听起来有点奇怪。看看你的桌面主题,或者改变它们,看看行为是否改变。事实上,在某些情况下,按钮可以而且确实会改变颜色,这表明还有其他因素在起作用。