使用wx.GridBagSizer()使控件能随着用户缩放窗口大小而自动调整,wx.GridBagSizer()把空间用横线和竖线划分成一个个格子,用控价填充这些格子,从而自由的控制布局
原来的布局代码:
# 创建水平方向box布局管理器
hbox = wx.BoxSizer()
hbox.Add(vsbox_button, 0, wx.EXPAND | wx.BOTTOM, 5)
hbox.Add(self.vsbox_show_operation, 0, wx.EXPAND | wx.BOTTOM, 5)
# 将hbox添加到垂直box
self.vbox.Add(hbox, proportion=0, flag=wx.CENTER)
self.pnl.SetSizer(self.sizer)
使用wx.GridBagSizer()使其尺寸自适应:
self.sizer = wx.GridBagSizer(1, 1)
self.sizer.Add(vsbox_button, (0, 0),(1,0),wx.EXPAND)
self.sizer.Add(self.vsbox_show_operation, (0, 1),(1,1),wx.EXPAND)
self.sizer.AddGrowableRow(0) #使第一行自适应
self.sizer.AddGrowableCol(1) #使第二列自适应
self.sizer.Add(vsbox_button, (0, 0),(1,0),wx.EXPAND)
中第一个参数是放的控件,第二个是摆放起始位置,第三个是占的格子((1,1)就是每个方向占了一个格子)
AddGrowableRow()
和AddGrowableCol()
是指定行和列自适应。这里因为可以看做是一行两列的排布,因此让vsbox_button不在横向变形,仅在竖方向变形;vsbox_show_operation在两个方向自由变形,就是这样设置。