2013-11-20 3 views
0

Я создал STATUSBAR в моем wxApp, но это статусной не редактируется из другого класса:редактировать StatusBar из ChildClass

import wx 

class MainFrame(wx.Frame): 
    def __init__(self): 
     wx.Frame.__init__(self, None, wx.ID_ANY, 
          "Pyramid App",size=(800,600),style= wx.SYSTEM_MENU | wx.CAPTION | wx.MINIMIZE_BOX | wx.CLOSE_BOX) 

     self.SetBackgroundColour((232,232,232)) 
     self.p = wx.Panel(self,size=(800,600),pos=(0,0)) 
     self.PageThree = pageThree(self) 
     self.statusBar = self.CreateStatusBar() 
     self.statusBar.SetFieldsCount(2) 
     self.statusBar.SetStatusText('status bar from MainFrame', 0) 
     self.ChangeStatusBar('foo',1) 

    def ChangeStatusBar(self,txt,field): 
     self.statusBar.SetStatusText(txt,field) 

class pageThree(wx.Panel): 
    def __init__(self, parent): 
     wx.Panel.__init__(self, parent=parent,size=(800,525)) 
     self.myparent=parent 
     self.pageThree=wx.Panel(self,size=(800,525)) 
     wx.StaticText(self.pageThree, -1, 'this is page three', (20,20)) 
     #self.myparent.ChangeStatusBar('bar',1) 

if __name__ == "__main__": 
    app = wx.App() 
    MainFrame().Show() 
    app.MainLoop() 

Когда я раскомментировать последнюю строку моего ChildClass тогда я получаю эту ошибку: объекта MainFrame не имеет атрибута statusBar. Как редактировать текст statusBar из дочернего класса?

ответ

0

вы instansiating его перед self.statusBar существует

self.PageThree = pageThree(self) #now self.statusBar does not exists ... 
self.statusBar = self.CreateStatusBar() 

... изменить порядок

self.statusBar = self.CreateStatusBar() 
self.PageThree = pageThree(self) #now self.statusBar exists ... 
+0

ой блин, поздно в Германии - это было слишком просто = (спасибо! – Munchkin

Смежные вопросы