wxPython – StaticBoxSizer
StaticBoxSizer将一个盒子的尺寸放到一个静态盒子里。它在盒子周围提供一个边框,并在顶部提供一个标签。以下是准备staticboxsizer的步骤-
- 创建一个wx.StaticBox对象。
- 声明一个wx.StaticBoxSizer,将上述静态框作为其参数。
- 创建控件并添加到静态框编辑器中。
- 将它设置为框架的尺寸。
例子
在下面的例子中,两个静态框尺寸器被创建并添加到顶部的垂直框尺寸器中,它控制框架内面板的布局。
第一个 staticbox sizer 是围绕一个名为’Name’的静态框创建的。
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)
两个按钮对象,命名为 “ok “和 “cancel”,被放置在一个水平的盒子尺寸中,而这个盒子又被放在第二个静态盒子尺寸中。
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()
上述代码产生了以下输出—