- 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()
以上程式碼產生以下輸出 −
廣告