2010-02-16 23 views
5

ten kod:Jak zmienić kolor tła wx.Panel na 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() 

daje mi błąd:

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' 

Co robię źle? P.S .: Potrzebuję tej klasy jako wx.Panel!

Dzięki z góry

Odpowiedz

12

Metoda nazywa SetBackgroundColour, ze u.

Ponadto dwa razy łączysz zdarzenia dwiema różnymi metodami. Po prostu użyj stylu self.Bind i usuń pozostałe dwie linie.

+0

omg, dzięki m8 lol :( –