2010-02-16 35 views
5

este código:Cómo cambiar el color de fondo de wx.Panel en MouseOver?

import wx 

app = None 

class Plugin(wx.Panel): 
    def __init__(self, parent, *args, **kwargs): 
     wx.Panel.__init__(self, parent, *args, **kwargs) 
     self.SetBackgroundColour((11, 11, 11)) 
     self.name = "plugin" 

     self.Bind(wx.EVT_ENTER_WINDOW, self.onMouseOver) 
     self.Bind(wx.EVT_LEAVE_WINDOW, self.onMouseLeave) 

     wx.EVT_ENTER_WINDOW(self, self.onMouseOver) 
     wx.EVT_LEAVE_WINDOW(self, self.onMouseLeave) 

    def onMouseOver(self, event): 
     self.SetBackgroundColor((179, 179, 179)) 
     self.Refresh() 

    def onMouseLeave(self, event): 
     self.SetBackgroundColor((11, 11, 11)) 
     self.Refresh() 

    def OnClose(self, event): 
     self.Close() 
     app.Destroy() 

    def name(): 
     print self.name 


app = wx.App() 
frame = wx.Frame(None, -1, size=(480, 380)) 
Plugin(frame) 
frame.Show(True) 
app.MainLoop() 

me da el error:

Traceback (most recent call last): 
    File "C:\.... ... ....\plugin.py", line 18, in onMouseOver 
    self.SetBackgroundColor((179, 179, 179)) 
AttributeError: 'Plugin' object has no attribute 'SetBackgroundColor' 

¿Qué estoy haciendo mal? P.S .: ¡Necesito tener esta clase como un wx.Panel!

Gracias de antemano

Respuesta

12

El método se denomina SetBackgroundColour, con una u.

Además, está vinculando eventos dos veces con dos métodos diferentes. Simplemente use el estilo self.Bind y elimine las otras dos líneas.

+0

omg, gracias m8 lol :( –

Cuestiones relacionadas