Как я могу изменить курсор мыши на определенный виджет на моем 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()
Вы пробовали ловить 'EVT_ENTER_WINDOW' и' EVT_LEAVE_WINDOW' события на 'bmp2' и установив курсор через что? – dpwilson
После того, как вы проверили свой код, мой курсор меняется на руку, когда над 'bmp2'. Какие версии ОС/wxPython вы используете? – dpwilson
@dpwilson Я на Ubuntu Linux с версией wxpython 2.8.12.1 (gtk2-unicode). Для использования событий ввода/выхода мне все равно придется найти надежный способ установки курсора в целом. Тот факт, что он работает для 'bmp4.SetCursor', но не для' self.SetCursor' и 'self.panel.SetCursor' (по крайней мере, в моей системе), делает это запутанным для меня. – matec