BoxSizer布局
BoxSizer在一条水平或垂直线上的窗口部件的布局。当尺寸改变时,控制窗口部件的行为上很灵活。通常用于嵌套的样式,可用于几乎任何类型的布局。在前面的实例中,使用了文本和按钮等控件,并将这些控件通过 pos 参数布置在 pannel 画板上,虽然这种设置坐标的方式很容易理解,但是过程很麻烦。此外,控件的几何位置是绝对位置,也就是固定的。当调整窗口大小时,界面会不美观。在 wxPython 中有一种更智能的布局方式 sizer(尺寸器)。sizer 是用于自动布局一组窗口控件的算法。sizer 被附加到一个容器,通常是一个框架或面板,在父容器中创建的子窗口控件必须被分别添加到sizer。当 sizer 被附加到容器时,它随后就可以管理它所包含的子布局。
wxPython 提供了5个sizer,定义在下所示:
BoxSizer #在一条水平或垂直线上的窗口部件的布局。当尺寸改变时,控制窗口部件的行为上很灵活。通常用于嵌套的样式,可用于几乎任何类型的布局。 GridSizer #一个十分基础的网格布局。当你要放置的窗口部件都是同样的尺寸且整齐地放入一个规则的网格中可以使用它。 FlexGridSizer #对 GridSizer 稍微做了些改变,当窗口部件有不同的尺寸时,可以有更好的结果。 GridBagSizer #GridSizer 系列中最灵活的成员。使得网格中的窗口部件可以随意放置。 StaticBoxSizer #一个标准的 BoxSizer。带有标题和环线
1、什么是 BoxSizer
BoxSizer 是 wxPython 所提供的 sizer 中的最简单和最灵活的。一个 BoxSizer 是一个垂直列或水平行,窗口部件在其中从左至右或从上到下布置在一条线上。虽然这听起来好像用处不大,但是来自相互之间嵌套sizer 的能力使你能够在每行或每列很容易放置不同数量的项目。由于每个sizer 都是一个独立的实体,因此你的布局就有了更多的灵活性。对于大多数的应用程序,一个嵌套水平 sizer 的垂直 sizer 将使你能够创建你所需要的布局,
2、使用 BoxSizer 布局
尺寸器会管理组件的尺寸。只要将部件添加到尺寸器上,再加上一些布局参数,就可以让尺寸器自己去管理父组件的尺寸。下面使用 BoxSizer 实现简单的布局。代码如下:
import wx class Myframe(wx.Frame): def __init__(self,parent,id): frame = wx.Frame.__init__(self,parent,id,title='用户登陆',pos=(100,100),size=(200,200)) # 创建面板 panel = wx.Panel(self) self.title = wx.StaticText(panel,label="请输入用户名和密码”) # 添加容器,容器中控件按纵向排列 vsizer = wx.BoxSizer(wx.VERTICAL) vsizer.Add(self.title,proportion=0,flag=wx.BOTTOM|wx.TOP|wx.ALIGN_CENTER,border = 15) panel.SetSizer(vsizer) if '__name__' == '__main__' app = wx.App() #初始化应用 frame = Myframe(parent=None, id=-1) frame.Show() #显示窗口 app.MainLoop() #调用App类的MainLoop()主循环方法
执行结果如下图所示:
上述代码中,首先设置了增加背景控件(wx.Panel),并创建了一个wx.BoxSizer,它带有一个决定其是水平还是垂直的参数(wx.HORIZONTAL 或者 wx.VERTICAL),默认为水平;然后使用 Add() 方法将控件加入sizer,最后使用面板的 SetSizer() 方法设定它的尺寸器。
Add()方法的语法格式如下:
Box.Add(control, proportion, flag, border)
参数说明:
本文未完全显示,开通会员查看全文......