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 - www.xuhuhu.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()
上面的代碼產生下麵的輸出 -



上一篇: wxPython可停靠窗口 下一篇: wxPython繪圖API