鍍金池/ 教程/ Python/ wxPython StaticBoxSizer布局
wxPython GUI構(gòu)建工具wxFormBuilder
wxPython StaticText類
WxPython教程
wxPython可??看翱?/span>
wxPython ComboBox & Choice類
wxPython FlexiGridSizer布局
wxPython入門(Hello World)
wxPython RadioButton & RadioBox類
wxPython拖放
wxPython HTMLWindow類
wxPython ToolBar類
wxPython GridBagSizer布局
wxPython Dialog類
wxPython布局管理
wxPython TextCtrl類
wxPython開發(fā)環(huán)境安裝
wxPython Slider類
wxPython CheckBox類
wxPython Major類
wxPython GridSizer布局
wxPython事件處理
wxPython SplitterWindow類
Menu Item, Menu & MenuBar類
wxPython Button控件
wxPython StaticBoxSizer布局
wxPython Guage類
wxPython Frame類
wxPython多文檔界面
wxPython Panel類
wxPython BoxSizer布局
wxPython繪圖API

wxPython StaticBoxSizer布局

StaticBoxSizer把一個盒子大小測定器到靜態(tài)框。它提供了圍繞框邊界連同在頂部的標(biāo)簽。涉及準(zhǔn)備statcboxsizer以下步驟 ?

  • 創(chuàng)建一個wx.StaticBox對象。
  • 聲明一個wx.StaticBoxSizer與上面的靜態(tài)框作為其參數(shù)。
  • 創(chuàng)建控件并添加到staticbox大小測定器。
  • 設(shè)置為大小測定器的框架。

實例

在下面的例子中,兩個staticbox大小測定器被創(chuàng)建并添加到頂部垂直框大小測定器,它控制一個frame內(nèi)部面板的布局。
第一個staticbox大小測定器是圍繞一個名為“Name”框。
nm = wx.StaticBox(panel, -1, 'Name:') 
nmSizer = wx.StaticBoxSizer(nm, wx.VERTICAL)
橫向box大小測定器,持有兩個標(biāo)簽和兩個文本框,加入到nmSizer靜態(tài)框中大小測定器。
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)
同樣,另一個 staticbox 大小測定器有一個名為“Buttons”靜態(tài)框。
sbox = wx.StaticBox(panel, -1, 'buttons:') 
sboxSizer = wx.StaticBoxSizer(sbox, wx.VERTICAL)
兩個按鈕的對象,命名為 ‘ok’ 和 ‘cancel’ 都放在一個水平box大小測定器,這反過來,被放置在第二個staticbox大小測定器內(nèi)。
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)
兩個靜態(tài)框的大小測定器,‘name’ 和 ‘Buttons’ 被添加到一個垂直box大小測定器充當(dāng)頂層框架布局管理器。
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 - www.yiibai.com') 
app.MainLoop()

上面的代碼產(chǎn)生下面的輸出 -