- wxPython 教程
- wxPython - 首頁
- wxPython - 介紹
- wxPython - 環境
- wxPython - Hello World
- wxPython - GUI 構建器工具
- wxPython - 主要類
- wxPython - 事件處理
- wxPython - 佈局管理
- wxPython - 按鈕
- wxPython - 可停靠視窗
- 多文件介面
- wxPython - 繪圖 API
- wxPython - 拖放
- wxPython 資源
- wxPython - 快速指南
- wxPython - 有用的資源
- wxPython - 討論
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()
以上程式碼生成以下輸出 −
wxpython_layout_management.htm
廣告