Je veux créer un effet de survol sur StaticBitmap - Si le curseur de la souris est sur le bitmap, montre une image, sinon, montre la deuxième image. C'est un programme trivial (fonctionne parfaitement avec un bouton). Toutefois, StaticBitmap n'émet pas d'événements EVT_WINDOW_ENTER, EVT_WINDOW_LEAVE.Comment créer un effet de survol sur StaticBitmap dans wxpython?
Je peux travailler avec EVT_MOTION. Si les images sont commutées lorsque le curseur est sur le bord de l'image, le commutateur ne fonctionne parfois pas. (Principalement avec le déplacement rapide sur le bord).
code Exemple:
#!/usr/bin/python
# -*- coding: utf-8 -*-
import wx
def onWindow(event):
print "window event:", event.m_x, event.m_y
def onMotion(event):
print "motion event:", event.m_x, event.m_y
app = wx.App()
imageA = wx.Image("b.gif", wx.BITMAP_TYPE_ANY).ConvertToBitmap()
imageB = wx.Image("a.gif", wx.BITMAP_TYPE_ANY).ConvertToBitmap()
frame = wx.Frame(None, wx.ID_ANY, title="Hover effect", size=(100+imageA.GetWidth(), 100+imageA.GetHeight()))
w = wx.Window(frame)
bmp = wx.StaticBitmap(w, -1, imageA, (50, 50), (imageA.GetWidth(), imageA.GetHeight()))
bmp.Bind(wx.EVT_MOTION, onMotion)
bmp.Bind(wx.EVT_ENTER_WINDOW, onWindow)
bmp.Bind(wx.EVT_LEAVE_WINDOW, onWindow)
frame.Show()
app.MainLoop()