【发布时间】:2016-02-21 17:30:48
【问题描述】:
如何使鼠标光标在我的wx.Panel 上的特定小部件上切换?
在下面的示例中,我想让光标在右上角的图像bmp2 上方时变成一只手,但它仍然是一个箭头。令我好奇的是,如果我将bmp2.SetCursor 替换为bmp4.SetCursor,那么光标会突然变成一只手。
import wx
class Example(wx.Frame):
def __init__(self, parent):
wx.Frame.__init__(self, parent)
self.panel = wx.Panel(self)
gs = wx.GridSizer(2, 2, 5, 5)
bmp1 = wx.StaticBitmap(self.panel, wx.ID_ANY, wx.EmptyBitmap(150, 150))
bmp2 = wx.StaticBitmap(self.panel, wx.ID_ANY, wx.EmptyBitmap(150, 150))
bmp3 = wx.StaticBitmap(self.panel, wx.ID_ANY, wx.EmptyBitmap(150, 150))
bmp4 = wx.StaticBitmap(self.panel, wx.ID_ANY, wx.EmptyBitmap(150, 150))
gs.Add(bmp1, 0, wx.EXPAND)
gs.Add(bmp2, 0, wx.EXPAND)
gs.Add(bmp3, 0, wx.EXPAND)
gs.Add(bmp4, 0, wx.EXPAND)
bmp2.SetCursor(wx.StockCursor(wx.CURSOR_HAND))
self.panel.SetSizer(gs)
gs.Fit(self)
if __name__ == '__main__':
app = wx.App()
Example(None).Show()
app.MainLoop()
【问题讨论】:
-
您是否尝试过捕捉
bmp2上的EVT_ENTER_WINDOW和EVT_LEAVE_WINDOW事件并通过它设置光标? -
在实际测试您的代码后,当超过
bmp2时,我的光标变为手形。您使用的是什么 OS/wxPython 版本? -
@dpwilson 我在 Ubuntu Linux 上使用 wxpython 版本 2.8.12.1 (gtk2-unicode)。对于使用进入/离开事件,我仍然必须找到一种可靠的方法来设置光标。它适用于
bmp4.SetCursor但不适用于self.SetCursor或self.panel.SetCursor(至少在我的系统上)这一事实让我感到困惑。