wxPython - Yerleştirilebilir Windows

wxAuiwxWidgets API'ye dahil edilmiş bir Gelişmiş Kullanıcı Arayüzü kitaplığıdır. Wx.aui.AuiManager, AUI çerçevesindeki merkezi sınıf.

AuiManagerwx.aui.AuiPanelInfo nesnesindeki her panelin bilgilerini kullanarak belirli bir çerçeveyle ilişkili bölmeleri yönetir. PanelInfo nesne kontrol yerleştirme ve kayan davranışın çeşitli özelliklerini öğrenelim.

Üst düzey çerçeveye yerleştirilebilir pencereler yerleştirmek aşağıdaki adımları içerir -

Önce, bir AuiManager nesnesi oluşturun.

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

Ardından gerekli kontrollere sahip bir panel tasarlanır.

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'nun aşağıdaki parametreleri ayarlanır.

  • Direction - Üst, Alt, Sol, Sağ veya Orta

  • Position- Kenetlenebilir bir bölgeye birden fazla bölme yerleştirilebilir. Her birine bir pozisyon numarası verilir.

  • Row- Bir satırda birden fazla bölme görünür. Aynı satırda görünen birden fazla araç çubuğu gibi.

  • Layer - Bölmeler katmanlar halinde yerleştirilebilir.

Bu PanelInfo kullanılarak, tasarlanan panel yönetici nesnesine eklenir.

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

Üst düzey pencerenin geri kalanında her zamanki gibi başka kontroller olabilir.

Kodun tamamı aşağıdaki gibidir -

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

Yukarıdaki kod aşağıdaki çıktıyı üretir -