wxPython – StaticBoxSizer

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()

上述代码产生了以下输出—

wxPython - StaticBoxSizer

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程