xPython多文档界面 wxPython可停靠窗口 wxPython Drawing API 典型的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() 上面的代码产生以下输出 - wxPython可停靠窗口 wxPython Drawing API