一、简介:
Sizer布局管理器是管理界面中各种控件的组件,使用Sizer组件可以自动解决控件的位置和控件之间的间距问题,提高GUI程序的可控性。wxpython提供了Sizer布局管理器自动设置控件之间的位置。布局管理器分为grid sizer,flex grid sizer,grid bag sizer,box sizer,(都是继承父类Sizer)。
二、创建步骤:
1.创建Sizers布局管理器。
2.调整SetSizer()将布局管理器添加到容器中,这里的容器一般指窗口,panel面板等组件。这样就建立了布局管理器和窗口之间的联系。
def SetSizer(self, sizer, deleteOld=True)
3.调用容器的Add()方法将各个组件添加到布局管理器中.
Add(self,item, proportion=0, flag=0, border=0, userData=None)
item 是添加到布局管理器中的组件,
proportion 是表示当前窗口大小发生改变时,控件之间的比例
flag 表示窗口风格,对齐方式,边框等信息
border 边框大小(前提是flag设置了边框)
userdata 用于传递额外的数据
4.调用容器的Fit()方法计算布局管理器和容器窗口的大小,来自动调整窗口大小,使其适合当前窗口。
Fit(self)
三、布局管理器的使用:
1、Grid Sizer布局:
grid sizer布局是采用表格的形式分配各种控件,不需要设置控件在容器中的位置,直接添加到grid sizer布局管理器中即可
GridSizer(cols, vgap, hgap)#vgap hgap代表水平距离和垂直距离
GridSizer(cols, gap=Size(0,0))
GridSizer(rows, cols, vgap, hgap)
GridSizer(rows, cols, gap)
示例:
class MyGrid(wx.Frame):
def __init__(self,parent=None):
super(MyGrid, self).__init__(parent,-1,"grid布局",size=(300,150))
panel = wx.Panel(self,-1)
sizer = wx.GridSizer(rows=3, cols=3, vgap=5, hgap=5) #vgap hgap代表水平距离和垂直距离
panel.SetSizer(sizer)
colorList = ["红", "绿", "蓝", "白", "紫"]
for color in colorList:
btn = wx.Button(panel,-1,color,style=wx.DEFAULT)
sizer.Add(btn,0,wx.TOP|wx.LEFT) #将控件添加在下一可用网格插槽,默认也是0,可以不用写 第一个是比例值,第二个是flag风格
panel.Fit()
class MyApp(wx.App):
def OnInit(self):#在事件循环处理之前被系统调用
print("开始进入事件循环")
self.frame = MyGrid(None)
self.frame.Show()
self.SetTopWindow(self.frame)
self.frame.GetId()#获得id
re