我无法使用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窗格?
答案 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