2009-12-09 28 views
0

我很難用AUIManager切換窗格。Wx.Widgets AUIMananger切換窗格

這裏基本上是我在做什麼:

class foo(wx.Frame): 
    def __init__(self, parent, title): 
     wx.Frame.__init__(self,parent,wx.ID_ANY,title,size=wx.Size(800,600)) 
     self.menubar = wx.MenuBar() 

     self._mgr = wx.aui.AuiManager(self) 
     self._mgr.AddPane(self.randomwidget, wx.LEFT, 'Widget Name') 
     self._mgr.Update() 

     self.menu_view = wx.Menu() 
     self.menu_view_randomwidget = wx.MenuItem(self.menu_view,wx.ID_ANY, 'Widget Name', kind=wx.ITEM_CHECK) 
     self.menu_view.AppendItem(self.menu_view_randomwidget) 
     self.Bind(wx.EVT_MENU, self.togglePane, id=self.menu_view_randomwidget.GetId()) 
     self.menubar.Append(self.menu_view, '&View') 

    def togglePane(self,event): 
     if self._mgr.GetPane('Widget Name').IsShown(): 
      self._mgr.GetPane('Widget Name').Hide() 
     else: 
      self._mgr.GetPane('Widget Name).Show() 
     print self._mgr.GetPane('Widget Name').IsOk() 

這總是導致「假」輸出。有更合適的方法來切換各種aui窗格嗎?

+0

僅供參考:在agw通用控件集中,還有一個純粹的AUI實現的Python實現。它比默認的AUI更先進一點。 – 2010-11-05 18:07:29

回答

1

此方法適用於我。如果您在顯示或隱藏窗格後在window manager上撥打Update(),它也應該適用於您。

def togglePane(self,event): 
    if self._mgr.GetPane('Widget Name').IsShown(): 
     self._mgr.GetPane('Widget Name').Hide() 
    else: 
     self._mgr.GetPane('Widget Name).Show() 
     print self._mgr.GetPane('Widget Name').IsOk() 
    self._mgr.Update()#<--------------It should work if you add this line