如何在 wxPython StaticBitmap 上接收鼠标事件?

How can I receive mouse events on a wxPython StaticBitmap?

我一直在尝试在 wxpython 中的 wx.StaticBitmap 对象上接收鼠标事件。进展不顺利。我在 MacOS 上使用 wxpython 4.1.0 和 wxWidgets 3.1.4。我什至使用检查工具来调查发送到 StaticBitmap 对象的事件。似乎根本没有鼠标事件到达 StaticBitmap 对象。

下面是一些演示问题的示例代码:

import wx

def OnFrameClicked(e):
    print("Frame received click event")
    print(e.GetPosition())
    e.Skip()

def OnImageClicked(e):
    print("Image received click event")
    print(e.GetPosition())

app = wx.App(False)
frame = wx.Frame(None, wx.ID_ANY, "wxStaticBitmap Experiment")
frame.Bind(wx.EVT_LEFT_DOWN, OnFrameClicked)
bmp = wx.Image('100x100.png', wx.BITMAP_TYPE_ANY).ConvertToBitmap()
image = wx.StaticBitmap(frame, bitmap=bmp)
image.Bind(wx.EVT_LEFT_DOWN, OnImageClicked)
frame.Show(True)
# uncomment the next 2 lines to enable detailed inspection
#import wx.lib.inspection
#wx.lib.inspection.InspectionTool().Show()
print(wx.version())
app.MainLoop()

这里还有一个 github 项目,其中还包括示例 png 图像:wxpython-staticbitmap

单击 StaticBitmap 对象时如何获取鼠标事件?

wx.StaticBitmap 可能不是 Mac 上的“真实”小部件,而是由 OS 简单地绘制在屏幕上。如果您需要这些事件,我建议您查看 wx.lib.statbmp.

中 wx.StaticBitmap 的通用实现