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