鍍金池/ 教程/ Python/ wxPython多文檔界面
wxPython GUI構(gòu)建工具wxFormBuilder
wxPython StaticText類
WxPython教程
wxPython可停靠窗口
wxPython ComboBox & Choice類
wxPython FlexiGridSizer布局
wxPython入門(Hello World)
wxPython RadioButton & RadioBox類
wxPython拖放
wxPython HTMLWindow類
wxPython ToolBar類
wxPython GridBagSizer布局
wxPython Dialog類
wxPython布局管理
wxPython TextCtrl類
wxPython開發(fā)環(huán)境安裝
wxPython Slider類
wxPython CheckBox類
wxPython Major類
wxPython GridSizer布局
wxPython事件處理
wxPython SplitterWindow類
Menu Item, Menu & MenuBar類
wxPython Button控件
wxPython StaticBoxSizer布局
wxPython Guage類
wxPython Frame類
wxPython多文檔界面
wxPython Panel類
wxPython BoxSizer布局
wxPython繪圖API

wxPython多文檔界面

一個典型的GUI應用程序可以有多個窗口。標簽和堆疊部件一次允許激活一個這樣的窗口。然而,很多時候這種方法可能不是有用,因為其他窗口可能是隱藏的。

同時顯示多個窗口的一種方法是創(chuàng)建它們作為獨立的窗口。這被稱為SDI(單文檔界面)。這需要更多的存儲器資源,每個窗口可以具有其自己的菜單系統(tǒng),工具欄等等

在wxPython中的MDI框架提供了wx.MDIParentFrame類。其對象充當容器為多個子窗口,每個對象是wx.MDIChildFrame類。
子窗口位于父框架的MDIClientWindow區(qū)域。當一個孩子幀添加,父框架的菜單欄將顯示包含子窗口按鈕排放在級聯(lián)或平鋪方式在菜單。

實例

下面的例子演示MDIParentFrame的用途為頂層窗口。菜單按鈕被稱為NewWindow增加在客戶區(qū)的子窗口。多個窗口可以被添加,然后設置為層疊或平鋪順序。

完整的代碼如下 -
import wx 
 
class MDIFrame(wx.MDIParentFrame): 
   def __init__(self): 
      wx.MDIParentFrame.__init__(self, None, -1, "MDI Parent - www.yiibai.com", 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()
上面的代碼產(chǎn)生下面的輸出 -