Wx.Widgets AUI管理器切换窗格

1 投票
1 回答
588 浏览
提问于 2025-04-15 16:50

我在使用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 个回答

1

这个方法对我来说很好用。如果你在显示或隐藏你的面板之后,调用一下 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

撰写回答