wxPython:进入 child 控件时调用 wx.EVT_LEAVE_WINDOW

wxPython: wx.EVT_LEAVE_WINDOW is called when entering a child control

我正在尝试绑定事件以仅当鼠标出现在 window 上时增加不透明度,但是当鼠标悬停在 child 控件上时不透明度会降低

    self.Bind(wx.EVT_ENTER_WINDOW, self.SetOpaque)
    self.Bind(wx.EVT_LEAVE_WINDOW, self.SetSemiTransparent)

有没有 wx.EVT_LEAVE_WINDOW 的替代方案,当悬停在 child 上时不会触发?

示例:

将鼠标悬停在按钮或文本框上会导致不透明度下降(如 SetSemiTransparent 中所定义):

触发这些事件的是 OS,而不是 wxWidgets。

wx.EVT_LEAVE_WINDOW 的父级处理程序中查找当前鼠标坐标是在子级内部还是在父级外部。

要测试一个点是否在 window 内,您可以使用 wx.HitTest.

wx.HitTest

的例子
class SomeFrame(wx.Frame):
    def __init__(self):
        super().__init__(None, style=wx.NO_BORDER)
        self.Bind(wx.EVT_LEAVE_WINDOW, self.SomeEventHandler)

    def SomeEventHandler(self, event):
        if self.HitTest(event.Position) == wx.HT_WINDOW_OUTSIDE:
            #Process some event.
            pass

另请参阅: