1 需求
2 接口
- wx.Sizer().Add()


proportion(比例)参数是一个整数,用于指定当父布局管理器的空间有剩余时,被添加的对象(这里是general_sizer及其包含的组件)在布局方向上可以占据的额外空间的比例。
当
proportion为0时,表示无论父布局管理器剩余多少空间,该对象都不会额外扩展去占据这些剩余空间,会保持其原本的最小尺寸。如果设置为大于
0的值,比如1,在有多个添加对象且都设置了非零proportion值的情况下,剩余空间会按照这些proportion值的比例分配给对应的对象。例如,有两个对象,proportion分别设置为1和2,那么它们会按照1:2的比例去分配剩余空间。
间距相关
wx.ALL:在对象的上、下、左、右四个方向都应用由第四个参数指定的间距值。例如main_sizer.Add(some_widget, 0, wx.ALL, 5),表示some_widget四周都有 5 像素的间距。
wx.TOP:只在对象的顶部应用由第四个参数指定的间距值。
wx.BOTTOM:只在对象的底部应用由第四个参数指定的间距值。
wx.LEFT:只在对象的左侧应用由第四个参数指定的间距值。
wx.RIGHT:只在对象的右侧应用由第四个参数指定的间距值。
wx.HORIZONTAL:在对象的左侧和右侧应用由第四个参数指定的间距值,用于控制水平方向的间距 。
wx.VERTICAL:在对象的顶部和底部应用由第四个参数指定的间距值,用于控制垂直方向的间距 。对齐方式相关
wx.ALIGN_LEFT:将对象在布局空间中靠左对齐。wx.ALIGN_RIGHT:将对象在布局空间中靠右对齐。wx.ALIGN_TOP:将对象在布局空间中靠顶部对齐。wx.ALIGN_BOTTOM:将对象在布局空间中靠底部对齐。wx.ALIGN_CENTER_VERTICAL:将对象在布局空间中垂直居中对齐 。wx.ALIGN_CENTER_HORIZONTAL:将对象在布局空间中水平居中对齐。wx.ALIGN_CENTER:将对象在布局空间中水平和垂直都居中对齐,等价于同时使用wx.ALIGN_CENTER_VERTICAL和wx.ALIGN_CENTER_HORIZONTAL。伸展相关
wx.EXPAND:使对象在布局方向上(水平或垂直,取决于布局管理器的方向)尽可能地伸展,占据所有可用空间。如果布局管理器是水平方向的BoxSizer,那么添加的对象会在水平方向上填满剩余空间;如果是垂直方向的BoxSizer,则在垂直方向上填满剩余空间 。换行相关
wx.SHAPED:告诉布局管理器,子窗口部件具有不规则形状,布局管理器应相应地调整布局。wx.FIXED_MINSIZE:即使窗口大小改变,也强制子窗口部件保持其最小尺寸。wx.GROW:与wx.EXPAND类似,使对象在布局方向上伸展以填充可用空间。
3 布局:wx.BoxSizer

import wx
class MyFrame(wx.Frame):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.init_ui()
self.Center()
self.Maximize()
def init_ui(self):
panel = wx.Panel(self)
sizer = wx.BoxSizer(wx.VERTICAL)
button1 = wx.Button(panel, label="Button 1")
button2 = wx.Button(panel, label="Button 2")
sizer.Add(button1,
proportion=1,
flag=wx.ALL | wx.EXPAND,
border=5)
sizer.Add(button2,
proportion=1,
flag=wx.ALL | wx.EXPAND,
border=5)
panel.SetSizer(sizer)
if __name__ == "__main__":
app = wx.App()
frame = MyFrame(None, title="wxPython Demo")
frame.Show()
app.MainLoop()