wxPython - Windows ที่เชื่อมต่อได้

wxAuiเป็นไลบรารีส่วนติดต่อผู้ใช้ขั้นสูงที่รวมอยู่ใน wxWidgets API Wx.aui.Aui จัดการคลาสกลางในกรอบงาน AUI

AuiManagerจัดการบานหน้าต่างที่เกี่ยวข้องกับเฟรมเฉพาะโดยใช้ข้อมูลของแต่ละพาเนลในออบเจ็กต์ wx.aui.AuiPanelInfo ให้เราเรียนรู้เกี่ยวกับคุณสมบัติต่างๆของการเชื่อมต่อการควบคุมออบเจ็กต์ PanelInfo และพฤติกรรมการลอยตัว

การวางหน้าต่างที่สามารถเชื่อมต่อได้ในเฟรมระดับบนสุดมีขั้นตอนต่อไปนี้ -

ขั้นแรกสร้างวัตถุ AuiManager

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)

พารามิเตอร์ต่อไปนี้ของ AuiPanelInfo ถูกตั้งค่า

  • Direction - บนล่างซ้ายขวาหรือตรงกลาง

  • Position- สามารถวางบานหน้าต่างได้มากกว่าหนึ่งบานในพื้นที่ที่เชื่อมต่อได้ แต่ละคนจะได้รับหมายเลขตำแหน่ง

  • Row- มากกว่าหนึ่งบานหน้าต่างปรากฏในหนึ่งแถว เช่นเดียวกับแถบเครื่องมือมากกว่าหนึ่งแถบที่ปรากฏในแถวเดียวกัน

  • Layer - บานหน้าต่างสามารถวางเป็นชั้น ๆ ได้

การใช้ PanelInfo นี้พาเนลที่ออกแบบไว้จะถูกเพิ่มเข้าไปในอ็อบเจ็กต์ตัวจัดการ

info1 = wx.aui.AuiPaneInfo().Bottom() 
self.mgr.AddPane(pnl,info1)

ส่วนที่เหลือของหน้าต่างระดับบนสุดอาจมีการควบคุมอื่น ๆ ตามปกติ

รหัสที่สมบูรณ์มีดังนี้ -

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

รหัสด้านบนสร้างผลลัพธ์ต่อไปนี้ -