wxPython - Windows Dockable

wxAuiadalah pustaka Antarmuka Pengguna Lanjutan yang tergabung dalam wxWidgets API. Wx.aui.AuiManager kelas pusat dalam kerangka AUI.

AuiManagermengelola panel yang terkait dengan bingkai tertentu menggunakan informasi setiap panel di objek wx.aui.AuiPanelInfo. Mari kita pelajari tentang berbagai properti docking kontrol objek PanelInfo dan perilaku mengambang.

Menempatkan jendela yang dapat dipasang ke dok di bingkai tingkat atas melibatkan langkah-langkah berikut -

Pertama, buat objek AuiManager.

self.mgr = wx.aui.AuiManager(self)

Kemudian, sebuah panel dengan kontrol yang diperlukan dirancang.

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)

Parameter AuiPanelInfo berikut disetel.

  • Direction - Atas, Bawah, Kiri, Kanan, atau Tengah

  • Position- Lebih dari satu panel dapat ditempatkan di dalam wilayah yang dapat dipasang ke dok. Masing-masing diberi nomor posisi.

  • Row- Lebih dari satu panel muncul dalam satu baris. Sama seperti lebih dari satu bilah alat yang muncul di baris yang sama.

  • Layer - Panel dapat ditempatkan berlapis-lapis.

Menggunakan PanelInfo ini, panel yang dirancang ditambahkan ke objek manajer.

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

Jendela tingkat atas lainnya mungkin memiliki kontrol lain seperti biasa.

Kode lengkapnya adalah sebagai berikut -

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

Kode di atas menghasilkan keluaran sebagai berikut -