将AuiManager放在AuiNotebook页面中

时间:2010-03-23 17:43:19

标签: python wxpython wxwidgets

是否可以将AuiManager放入AuiNotebook页面?

使用小样本代码进行了测试,但我只得到了“分段错误”。

这可能开头吗?我想要这个的原因是将笔记本页面分成两部分,并在两部分的每个部分的顶部获得标题字段和最大化字段。一个简单的splitterwindow可以工作,但看起来不太好,不能轻易地最大化。它也没有标题字段。

以下示例代码。

import wx
import wx.aui

import wx.lib.inspection

class MyFrame(wx.Frame):
    def __init__(self, *args, **kwargs):
        wx.Frame.__init__(self, *args, **kwargs)

        self.mgr = wx.aui.AuiManager(self)

        self.left = wx.Panel(self, -1, size = (200, 150))
        self.right = wx.aui.AuiNotebook(self, -1, size = (200, 150))
        self.bottom = wx.Panel(self, -1, size = (200, 150))

        self.mgr.AddPane(self.bottom, wx.aui.AuiPaneInfo().Bottom())
        self.mgr.AddPane(self.left, wx.aui.AuiPaneInfo().Left().Layer(1))
        self.mgr.AddPane(self.right, wx.aui.AuiPaneInfo().CenterPane())

        self.new_panel('Panel 1')

        self.mgr.Update()
        self.Update()

    def new_panel(self, nm):
        pnl = wx.Window(self)
        pnl.identifierTag = nm
        self.right.AddPage(pnl, nm, select = True)
        self.sizer = wx.BoxSizer()
        self.sizer.Add(self.right, 1, wx.EXPAND)
        self.SetSizer(self.sizer)
        pnl.SetFocus()

        mgr = wx.aui.AuiManager(pnl)

        left = wx.Panel(self)
        right = wx.Panel(self)

        mgr.AddPane(left, wx.aui.AuiPaneInfo().Left())
        mgr.AddPane(right, wx.aui.AuiPaneInfo().Right())

        mgr.Update()

class MyApp(wx.App):
    def OnInit(self):
        frame = MyFrame(None, -1, '07_wxaui.py')
        frame.Show()
        self.SetTopWindow(frame)
        return 1

if __name__ == "__main__":
    app = MyApp(0)
    wx.lib.inspection.InspectionTool().Show()

    app.MainLoop()

1 个答案:

答案 0 :(得分:1)

wxAUIManager仅作为wxFrame的子项。

http://docs.wxwidgets.org/trunk/classwx_aui_manager.html