可以删除wx.aui.AuiManager的面板吗?

3 投票
3 回答
1182 浏览
提问于 2025-04-15 20:13

我想从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()

撰写回答