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