wxPython - StaticBoxSizer



StaticBoxSizer 將盒子大小調整器放在靜態盒子中。它在盒子周圍提供邊框,並在頂部提供標籤。準備 statcboxsizer 涉及以下步驟 −

  • 建立一個 wx.StaticBox 物件。
  • 用上述靜態盒子作為其引數宣告一個 wx.StaticBoxSizer。
  • 建立控制元件並將其新增到 staticbox sizer。
  • 將其設定為框架的調整器。

示例

在以下示例中,建立了兩個靜態盒子調整器,並將其新增到垂直盒子調整器中,該調整器控制框架內面板的佈局。

第一個靜態盒子調整器圍繞一個名為“名稱”的靜態盒子建立。

nm = wx.StaticBox(panel, -1, 'Name:') 
nmSizer = wx.StaticBoxSizer(nm, wx.VERTICAL)

將一個水平盒子調整器(包含兩個標籤和兩個文字框)新增到 nmSizer 靜態盒子調整器中。

nmbox = wx.BoxSizer(wx.HORIZONTAL)
  
fn = wx.StaticText(panel, -1, "First Name") 
nmbox.Add(fn, 0, wx.ALL|wx.CENTER, 5) 
nm1 = wx.TextCtrl(panel, -1, style = wx.ALIGN_LEFT) 
nm2 = wx.TextCtrl(panel, -1, style = wx.ALIGN_LEFT) 
ln = wx.StaticText(panel, -1, "Last Name") 
         
nmbox.Add(nm1, 0, wx.ALL|wx.CENTER, 5) 
nmbox.Add(ln, 0, wx.ALL|wx.CENTER, 5) 
nmbox.Add(nm2, 0, wx.ALL|wx.CENTER, 5)
  
nmSizer.Add(nmbox, 0, wx.ALL|wx.CENTER, 10)

類似地,另一個靜態盒子調整器包含一個名為“按鈕”的靜態盒子。

sbox = wx.StaticBox(panel, -1, 'buttons:') 
sboxSizer = wx.StaticBoxSizer(sbox, wx.VERTICAL)

兩個按鈕物件(名為“確定”和“取消”)放在一個水平盒子調整器中,該調整器反過來又放在第二個靜態盒子調整器中。

hbox = wx.BoxSizer(wx.HORIZONTAL) 
okButton = wx.Button(panel, -1, 'ok') 

hbox.Add(okButton, 0, wx.ALL|wx.LEFT, 10) 
cancelButton = wx.Button(panel, -1, 'cancel') 

hbox.Add(cancelButton, 0, wx.ALL|wx.LEFT, 10) 
sboxSizer.Add(hbox, 0, wx.ALL|wx.LEFT, 10)

將兩個靜態盒子調整器(“名稱”和“按鈕”)新增到一個垂直盒子調整器中,該調整器作為頂層框架中面板的佈局管理器。

panel = wx.Panel(self) 
vbox = wx.BoxSizer(wx.VERTICAL)
  
vbox.Add(nmSizer,0, wx.ALL|wx.CENTER, 5) 
vbox.Add(sboxSizer,0, wx.ALL|wx.CENTER, 5) 
panel.SetSizer(vbox)

以下是完整程式碼 −

import wx 
 
class Mywin(wx.Frame): 
   def __init__(self, parent, title): 
      super(Mywin, self).__init__(parent, title = title)
		
      panel = wx.Panel(self) 
      vbox = wx.BoxSizer(wx.VERTICAL) 
      nm = wx.StaticBox(panel, -1, 'Name:') 
      nmSizer = wx.StaticBoxSizer(nm, wx.VERTICAL) 
       
      nmbox = wx.BoxSizer(wx.HORIZONTAL) 
      fn = wx.StaticText(panel, -1, "First Name") 
		
      nmbox.Add(fn, 0, wx.ALL|wx.CENTER, 5) 
      nm1 = wx.TextCtrl(panel, -1, style = wx.ALIGN_LEFT) 
      nm2 = wx.TextCtrl(panel, -1, style = wx.ALIGN_LEFT) 
      ln = wx.StaticText(panel, -1, "Last Name") 
         
      nmbox.Add(nm1, 0, wx.ALL|wx.CENTER, 5)
      nmbox.Add(ln, 0, wx.ALL|wx.CENTER, 5) 
      nmbox.Add(nm2, 0, wx.ALL|wx.CENTER, 5) 
      nmSizer.Add(nmbox, 0, wx.ALL|wx.CENTER, 10)  
		
      sbox = wx.StaticBox(panel, -1, 'buttons:') 
      sboxSizer = wx.StaticBoxSizer(sbox, wx.VERTICAL) 
		
      hbox = wx.BoxSizer(wx.HORIZONTAL) 
      okButton = wx.Button(panel, -1, 'ok') 
		
      hbox.Add(okButton, 0, wx.ALL|wx.LEFT, 10) 
      cancelButton = wx.Button(panel, -1, 'cancel') 
		
      hbox.Add(cancelButton, 0, wx.ALL|wx.LEFT, 10) 
      sboxSizer.Add(hbox, 0, wx.ALL|wx.LEFT, 10) 
      vbox.Add(nmSizer,0, wx.ALL|wx.CENTER, 5) 
      vbox.Add(sboxSizer,0, wx.ALL|wx.CENTER, 5) 
      panel.SetSizer(vbox) 
      self.Centre() 
         
      panel.Fit() 
      self.Show()  
		
app = wx.App() 
Mywin(None,  'staticboxsizer demo') 
app.MainLoop()

以上程式碼生成以下輸出 −

StaticBoxSizer Output
wxpython_layout_management.htm
廣告
© . All rights reserved.