- wxPython 教程
- wxPython - 首页
- wxPython - 介绍
- wxPython - 环境
- wxPython - Hello World
- wxPython - GUI 构建工具
- wxPython - 主要类
- wxPython - 事件处理
- wxPython - 布局管理
- wxPython - 按钮
- wxPython - 可停靠窗口
- 多文档界面
- wxPython - 绘图 API
- wxPython - 拖放
- wxPython 资源
- wxPython - 快速指南
- wxPython - 有用资源
- wxPython - 讨论
wxPython - 多文档界面
典型的 GUI 应用程序可能有多个窗口。选项卡式和小部件允许一次激活多个窗口。但很多时候,这种方法并没有什么用处,因为其他窗口的视图是隐藏的。
在同一时间显示多个窗口的一种方式是将它们创建为独立窗口。这称为 SDI(**单文档界面**)。这需要更多的内存资源,因为每个窗口可能有自己的菜单系统、工具栏等。
wxPython 中的 MDI 框架提供了一个 wx.MDIParentFrame 类。它的对象充当多个子窗口的容器,每个子窗口都是 wx.MDIChildFrame 类的对象。
子窗口位于父框架的 MDIClientWindow 区域中。只要添加子框架,父框架的菜单栏就会显示一个窗口菜单,其中包含按钮,用于层叠或平铺排列子窗口。
示例
以下示例说明了将 MDIParentFrame 用作顶级窗口。名为 NewWindow 的菜单按钮在客户端区域添加一个子窗口。可以添加多个窗口,然后以层叠或平铺顺序排列。
完整代码如下 −
import wx class MDIFrame(wx.MDIParentFrame): def __init__(self): wx.MDIParentFrame.__init__(self, None, -1, "MDI Parent", size = (600,400)) menu = wx.Menu() menu.Append(5000, "&New Window") menu.Append(5001, "&Exit") menubar = wx.MenuBar() menubar.Append(menu, "&File") self.SetMenuBar(menubar) self.Bind(wx.EVT_MENU, self.OnNewWindow, id = 5000) self.Bind(wx.EVT_MENU, self.OnExit, id = 5001) def OnExit(self, evt): self.Close(True) def OnNewWindow(self, evt): win = wx.MDIChildFrame(self, -1, "Child Window") win.Show(True) app = wx.App() frame = MDIFrame() frame.Show() app.MainLoop()
以上代码产生以下输出 −
广告