Поместите AuiManager на страницу AuiNotebook - PullRequest
1 голос
/ 23 марта 2010

Возможно ли разместить AuiManager на странице AuiNotebook?

Протестировал с небольшим примером кода, но я получаю только «Ошибка сегментации».

Можно ли начать с этого? Причина, по которой я хочу это, состоит в том, чтобы разделить страницу записной книжки на две части и получить поле заголовка и поле максимизации в верхней части каждой части двух частей. Простое окно-разделитель будет работать, но оно не будет выглядеть так хорошо, и его нельзя будет развернуть так же легко. И при этом у него нет поля заголовка.

Пример кода ниже.

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 Ответ

1 голос
/ 24 марта 2010

wxAUIManager работает только как дочерний элемент wxFrame.

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

...