wxPython – Multiple Document Interface
Một ứng dụng GUI thông thường có thể có nhiều cửa sổ. Các tiện ích có tab và xếp chồng cho phép kích hoạt một cửa sổ như vậy tại một thời điểm. Tuy nhiên, nhiều lần cách tiếp cận này có thể không hữu ích vì chế độ xem các cửa sổ khác bị ẩn. Một cách để hiển thị nhiều cửa sổ cùng lúc là tạo chúng thành các cửa sổ độc lập. Đây được gọi là SDI (Giao diện tài liệu đơn). Điều này đòi hỏi nhiều tài nguyên bộ nhớ hơn vì mỗi cửa sổ có thể có hệ thống menu, thanh công cụ, v.v. riêng. Khung MDI trong wxPython cung cấp một lớp wx.MDIParentFrame. Đối tượng của nó hoạt động như một vùng chứa cho nhiều cửa sổ con, mỗi cửa sổ là một đối tượng của lớp wx.MDIChildFrame. Các cửa sổ con nằm trong vùng MDIClientWindow của khung cha. Ngay khi một khung con được thêm vào, thanh menu của khung cha sẽ hiển thị một menu Cửa sổ chứa các nút để sắp xếp các cửa sổ con theo kiểu xếp tầng hoặc xếp ô.
Example
The following example illustrates the uses of MDIParentFrame as top level window. A Menu button called NewWindow adds a child window in the client area. Multiple windows can be added and then arranged in a cascaded or tiled order.
The complete code is as follows −
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()
The above code produces the following output −
Vừa học vừa làm vừa nhận lương tại trung tâm Toidayhoc