2010-02-16 8 views
5

questo codice:Come cambiare il colore di sfondo wx.Panel su 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() 

mi dà l'errore:

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' 

Che cosa sto facendo di sbagliato? P.S .: Ho bisogno di avere questa classe come un wx.Panel!

Grazie in anticipo

risposta

12

Il metodo si chiama SetBackgroundColour, con una u.

Inoltre, si vincolano gli eventi due volte con due metodi diversi. Basta usare lo stile self.Bind e rimuovere le altre due linee.

+0

omg, grazie m8 lol :( –