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()

以上程式碼產生以下輸出 −

MDI output
廣告
© . All rights reserved.