可以删除wx.aui.AuiManager的面板吗?
我想从wx.aui.AuiManager中移除一个面板。
这可以做到吗?
3 个回答
0
panel_list = []
manager.AddPane(panel1,....)
panel_list.append(panel1)
manager.AddPane(panel2,....)
panel_list.append(panel2)
#and so on..
for i in panel_list:
manager.ShowPane(i, False)
manager.Update()
我觉得创建一个列表,把东西(比如经理的位置)添加到里面会更简单。然后;
与其使用销毁,不如用ShowPane(i, False)
来重复使用,这样更合理。而且别忘了Update()
:
1
我遇到了因为一些过时的(已删除的)面板留在AuiManager里而导致的段错误(segfault)。我用下面的代码清除了这些面板:
nbpanes = manager.GetAllPanes()
for pane in nbpanes:
pane.DestroyOnClose()
manager.ClosePane(pane)
nbpanes
是一个包含 PaneInfo 对象的列表。
4
我不太确定,但这个方法可能有效:
manager.DetachPane(pane)
pane.Destroy()
manager.Update()