Wx.Widgets AUIMananger切换窗格

时间:2009-12-09 17:13:49

标签: python wxpython

我无法使用AUIManager切换窗格。

这基本上就是我正在做的事情:

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()

这总是导致'False'输出。有没有更合适的方法来切换各种aui窗格?

1 个答案:

答案 0 :(得分:1)

这种方法对我来说很好。如果您在显示或隐藏窗格后在Update()上致电window manager,也应该适合您。

 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