wxPython - Windows có thể gắn được
wxAuilà một thư viện Giao diện Người dùng Nâng cao được tích hợp trong API wxWidgets. Wx.aui.AuiManager lớp trung tâm trong khung AUI.
AuiManagerquản lý các ngăn được liên kết với một khung cụ thể bằng cách sử dụng thông tin của từng bảng trong đối tượng wx.aui.AuiPanelInfo. Hãy để chúng tôi tìm hiểu về các thuộc tính khác nhau của hành vi điều khiển đối tượng PanelInfo và hành vi thả nổi.
Đưa các cửa sổ có thể gắn vào trong khung cấp cao nhất bao gồm các bước sau:
Đầu tiên, tạo một đối tượng AuiManager.
self.mgr = wx.aui.AuiManager(self)
Sau đó, một bảng điều khiển cần thiết được thiết kế.
pnl = wx.Panel(self)
pbox = wx.BoxSizer(wx.HORIZONTAL)
text1 = wx.TextCtrl(pnl, -1, "Dockable", style = wx.NO_BORDER | wx.TE_MULTILINE)
pbox.Add(text1, 1, flag = wx.EXPAND)
pnl.SetSizer(pbox)
Các thông số sau của AuiPanelInfo được thiết lập.
Direction - Trên cùng, Dưới cùng, Trái, Phải hoặc Trung tâm
Position- Có thể đặt nhiều hơn một ngăn bên trong một vùng có thể gắn được. Mỗi vị trí được cấp một số vị trí.
Row- Nhiều hơn một ngăn xuất hiện trong một hàng. Cũng giống như nhiều hơn một thanh công cụ xuất hiện trong cùng một hàng.
Layer - Các tấm có thể được đặt thành từng lớp.
Sử dụng PanelInfo này, bảng đã thiết kế được thêm vào đối tượng trình quản lý.
info1 = wx.aui.AuiPaneInfo().Bottom()
self.mgr.AddPane(pnl,info1)
Phần còn lại của cửa sổ cấp cao nhất có thể có các điều khiển khác như bình thường.
Mã hoàn chỉnh như sau:
import wx
import wx.aui
class Mywin(wx.Frame):
def __init__(self, parent, title):
super(Mywin, self).__init__(parent, title = title, size = (300,300))
self.mgr = wx.aui.AuiManager(self)
pnl = wx.Panel(self)
pbox = wx.BoxSizer(wx.HORIZONTAL)
text1 = wx.TextCtrl(pnl, -1, "Dockable", style = wx.NO_BORDER | wx.TE_MULTILINE)
pbox.Add(text1, 1, flag = wx.EXPAND)
pnl.SetSizer(pbox)
info1 = wx.aui.AuiPaneInfo().Bottom()
self.mgr.AddPane(pnl, info1)
panel = wx.Panel(self)
text2 = wx.TextCtrl(panel, size = (300,200), style = wx.NO_BORDER | wx.TE_MULTILINE)
box = wx.BoxSizer(wx.HORIZONTAL)
box.Add(text2, 1, flag = wx.EXPAND)
panel.SetSizerAndFit(box)
self.mgr.Update()
self.Bind(wx.EVT_CLOSE, self.OnClose)
self.Centre()
self.Show(True)
def OnClose(self, event):
self.mgr.UnInit()
self.Destroy()
app = wx.App()
Mywin(None,"Dock Demo")
app.MainLoop()
Đoạn mã trên tạo ra kết quả sau: