如何在wxPython中禁用鼠标改变颜色



我有一个自定义按钮,想禁用鼠标悬停时的明亮高亮颜色。我试着在EVT_ENTER_WINDOW中调用event.Skip(),但高亮颜色仍然出现。

class CustomButton(Button):
def __init__(self, parent, id, label, style):
Button.__init__(self, parent, id=id, label=label, style=style)

self.Bind(EVT_ENTER_WINDOW, self.OnEnterWindow)

def OnEnterWindow(self, event):
event.Skip()

一个选项是创建自己的自定义event,然后激活event并执行任何您需要做的事情,即在您的情况下,翻转按钮的颜色。

自定义事件使用wx.lib.newevent,例如

import wx
import wx.lib.newevent
NewEvent, EVT_MY_EVENT = wx.lib.newevent.NewEvent()
CMD_ID = wx.NewIdRef()
class MyApp(wx.App):
def OnInit(self):
self.frame = MyFrame()
return True
class MyFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, title="Window", pos=(100,150), size=(250,200))
sizer = wx.BoxSizer()
self.button1 = wx.Button(self, CMD_ID, label="Button 1")
sizer.Add(self.button1)
self.Bind(wx.EVT_BUTTON, self.OnButton, id=CMD_ID)
self.Bind(EVT_MY_EVENT, self.OnMyEvent)
self.Layout()
self.Show()
def OnButton(self, event):
id = event.GetId()
event = NewEvent(action="perform a defined action",button=id,other_setting=1234)
wx.PostEvent(self, event)
def OnMyEvent(self, event):
button = event.button
action = event.action
other = event.other_setting
print("event button number", button)
print("event action request", action)
print("event other", other)
if __name__ == "__main__":
app = MyApp()
app.MainLoop()

最新更新