将鼠标光标更改为小部件
Change mouse cursor over widget
如何让鼠标光标在 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()
最后我发现我可以通过将每个小部件包装到自己的面板中来避免我平台上的问题 (Linux)。
替换创建静态位图的八行并将它们添加到网格大小:
p1 = wx.Panel(self.panel)
p2 = wx.Panel(self.panel)
p3 = wx.Panel(self.panel)
p4 = wx.Panel(self.panel)
bmp1 = wx.StaticBitmap(p1, wx.ID_ANY, wx.EmptyBitmap(150, 150))
bmp2 = wx.StaticBitmap(p2, wx.ID_ANY, wx.EmptyBitmap(150, 150))
bmp3 = wx.StaticBitmap(p3, wx.ID_ANY, wx.EmptyBitmap(150, 150))
bmp4 = wx.StaticBitmap(p4, wx.ID_ANY, wx.EmptyBitmap(150, 150))
gs.Add(p1, 0, wx.EXPAND)
gs.Add(p2, 0, wx.EXPAND)
gs.Add(p3, 0, wx.EXPAND)
gs.Add(p4, 0, wx.EXPAND)
如何让鼠标光标在 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()
最后我发现我可以通过将每个小部件包装到自己的面板中来避免我平台上的问题 (Linux)。
替换创建静态位图的八行并将它们添加到网格大小:
p1 = wx.Panel(self.panel)
p2 = wx.Panel(self.panel)
p3 = wx.Panel(self.panel)
p4 = wx.Panel(self.panel)
bmp1 = wx.StaticBitmap(p1, wx.ID_ANY, wx.EmptyBitmap(150, 150))
bmp2 = wx.StaticBitmap(p2, wx.ID_ANY, wx.EmptyBitmap(150, 150))
bmp3 = wx.StaticBitmap(p3, wx.ID_ANY, wx.EmptyBitmap(150, 150))
bmp4 = wx.StaticBitmap(p4, wx.ID_ANY, wx.EmptyBitmap(150, 150))
gs.Add(p1, 0, wx.EXPAND)
gs.Add(p2, 0, wx.EXPAND)
gs.Add(p3, 0, wx.EXPAND)
gs.Add(p4, 0, wx.EXPAND)