StaticBoxSizer把一個盒子大小測定器到靜態框。它提供了圍繞框邊界連同在頂部的標籤。涉及準備statcboxsizer以下步驟 −
-
創建一個wx.StaticBox對象。
-
聲明一個wx.StaticBoxSizer與上面的靜態框作為其參數。
-
創建控件並添加到staticbox大小測定器。
-
設置為大小測定器的框架。
實例
在下面的例子中,兩個staticbox大小測定器被創建並添加到頂部垂直框大小測定器,它控制一個frame內部面板的佈局。
第一個staticbox大小測定器是圍繞一個名為“Name”框。
nm = wx.StaticBox(panel, -1, 'Name:') nmSizer = wx.StaticBoxSizer(nm, wx.VERTICAL)
橫向box大小測定器,持有兩個標籤和兩個文本框,加入到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)
同樣,另一個 staticbox 大小測定器有一個名為“Buttons”靜態框。
sbox = wx.StaticBox(panel, -1, 'buttons:') sboxSizer = wx.StaticBoxSizer(sbox, wx.VERTICAL)
兩個按鈕的對象,命名為 ‘ok’ 和 ‘cancel’ 都放在一個水準box大小測定器,這反過來,被放置在第二個staticbox大小測定器內。
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)
兩個靜態框的大小測定器,‘name’ 和 ‘Buttons’ 被添加到一個垂直box大小測定器充當頂層框架佈局管理器。
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.xuhuhu.com') app.MainLoop()
上面的代碼產生下麵的輸出 -
上一篇:
wxPython GridBagSizer佈局
下一篇:
wxPython佈局管理