wx.BoxSizer布局管理器用法,及其Add()方法参数说明
wx.BoxSizer 布局管理器是一种常见的布局管理器,它可以在水平或垂直方向上布置子窗口部件。同时,它还可以在水平或垂直方向上包含其他 wx.BoxSizer 来创建复杂的布局。
下面是 wx.BoxSizer 的用法:
- 创建一个
wx.BoxSizer布局管理器:
box_sizer = wx.BoxSizer(wx.HORIZONTAL) # 水平方向的 BoxSizer
- 创建你的子窗口:
button1 = wx.Button(parent, label='Button 1')
button2 = wx.Button(parent, label='Button 2')
- 使用
box_sizer的Add()方法将每个子窗口添加给box_sizer:
box_sizer.Add(button1, proportion=0, flag=wx.ALL, border=5)
box_sizer.Add(button2, proportion=0, flag=wx.ALL, border=5)
在 Add() 方法中,proportion 参数控制子窗口部件根据 wx.BoxSizer 的主体或垂直轴线作相应的尺寸调整;flag 参数是一个组合标志,用于控制子窗口部件的对齐方式和其他行为;border 参数控制子窗口与其他控件之间的空白大小。
当将多个控件添加到一个 sizer 中时,proportion 参数可以指定每个控件占 sizer 的比例。例如:
sizer = wx.BoxSizer(wx.HORIZONTAL) sizer.Add(ctrl1, proportion=1) sizer.Add(ctrl2, proportion=2) sizer.Add(ctrl3, proportion=1)
这里:- ctrl1 的尺寸将占总尺寸的 1/4
- ctrl2 的尺寸将占总尺寸的 2/4 = 1/2
- ctrl3 的尺寸将占总尺寸的 1/4也就是按比例 1:2:1 来设置三个控件的尺寸。如果某个控件的 proportion 設為 0,那麼它的尺寸将由它自己的最小尺寸决定,不受 proportion 的影响。所以在你的例子中:
- ctrl2 的尺寸将占总尺寸的 2/4 = 1/2
- ctrl3 的尺寸将占总尺寸的 1/4也就是按比例 1:2:1 来设置三个控件的尺寸。如果某个控件的 proportion 設為 0,那麼它的尺寸将由它自己的最小尺寸决定,不受 proportion 的影响。所以在你的例子中:
box_sizer.Add(button2, proportion=0, flag=wx.ALL, border=5)
设定 button2 的 proportion 为 0,意味着 button2 的尺寸将由它自己决定,不按比例缩放。它的大小仅由它的最小大小和 wx.ALL/border=5 指定的边框大小决定。proportion 参数的默认值为 0,所以如果不设置,控件尺寸也是由自己决定,不按比例。
- 最后,将
box_sizer布局管理器设置为父级窗口的布局管理器:
parent.SetSizer(box_sizer)
这样,wx.BoxSizer 就可以自动计算并调整子窗口部件的尺寸和位置,从而实现你想要的布局效果。

浙公网安备 33010602011771号