【问题标题】:How can I receive mouse events on a wxPython StaticBitmap?如何在 wxPython StaticBitmap 上接收鼠标事件?
【发布时间】:2020-09-19 19:41:27
【问题描述】:

我一直试图在 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()

这里还有一个包含示例 png 图像的 github 项目:wxpython-staticbitmap

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

【问题讨论】:

    标签: wxpython mouseevent


    【解决方案1】:

    wx.StaticBitmap 可能不是 Mac 上的“真实”小部件,它只是由操作系统在屏幕上绘制的。如果您需要这些事件,我建议您查看 wx.lib.statbmp 中 wx.StaticBitmap 的通用实现。

    【讨论】:

    • 使用 wx.lib.statbmp 中的 GenStaticBitmap 确实允许图像上的鼠标事件
    猜你喜欢
    • 1970-01-01
    • 2010-11-27
    • 2015-05-19
    • 2016-05-30
    • 2018-01-12
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多