wxPython – 多文档界面

wxPython – 多文档界面

一个典型的GUI应用程序可能有多个窗口。标签式和堆叠式部件允许一次激活一个这样的窗口。然而,很多时候这种方法可能并不实用,因为其他窗口的视图被隐藏了。

一种同时显示多个窗口的方法是将它们创建为独立的窗口。这就是所谓的SDI( Single Document Interface )。这需要更多的内存资源,因为每个窗口都可能有自己的菜单系统、工具栏等。

wxPython中的MDI框架提供了一个wx.MDIParentFrame类。它的对象作为多个子窗口的容器,每个子窗口都是wx.MDIChildFrame类的对象。

子窗口驻扎在父框架的MDIClientWindow区域。一旦添加了一个子框架,父框架的菜单栏就会显示一个Window菜单,其中包含以层叠或平铺方式排列子窗口的按钮。

例子

下面的例子说明了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 - 多文档界面

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程