将AuiManager放置在AuiNotebook页面中

2024-10-04 03:19:01 发布

您现在位置:Python中文网/ 问答频道 /正文

有没有可能在AuiNotebook页面中放一个AuiManager?在

已经用一个小样本代码进行了测试,但我只得到一个'分段错误'。在

这可以从开始吗?我想要这样做的原因是将一个笔记本页面分成两部分,并在这两个部分的每个部分的顶部获得标题字段和最大化字段。一个简单的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()

Tags: importselfrightsizedefupdateleftwx