如何在垂直BoxSizer中设置间距?
我该如何在垂直的 BoxSizer 中设置间距?在垂直的 BoxSizer 中,有什么方法可以类似或替代 SetVGap
(这个方法是用来设置网格布局中单元格之间的垂直间距,单位是像素)?
4 个回答
5
我猜你是指一个垂直的盒子大小调整器,像这样:
wxBoxSizer * szr = new( wxVERTICAL );
下面这个调用会增加10像素的“垂直间距”:
szr->AddSpacer(10);
在Python中,我想它大概会是这样的:
szr = wx.BoxSizer( wxVERTICAL )
... add stuff above gap
szr.AddSpacer(10)
... add stuff below gap
5
在 wx.BoxSizer
中没有间隙参数(就像你说的,GridSizers中是有的)。要创建间隙,可以通过设置控件的边框来实现。可以使用的样式有:wx.ALL
、wx.BOTTOM
和/或 wx.TOP
。
举个例子:
szr = wx.BoxSizer(wx.VERTICAL)
szr.Add(self.button_1, 0, wx.TOP|wx.BOTTOM|wx.ALIGN_CENTER_HORIZONTAL, 5)
这段代码会在盒子中添加一个居中的控件(我这里是一个按钮),并在顶部和底部留出5个点的边框。
如果你写:
vgap = 5
szr = wx.BoxSizer(wx.VERTICAL)
szr.Add(self.button_1, 0, wx.TOP, vgap)
szr.Add(self.button_2, 0, wx.TOP, vgap)
szr.Add(self.button_3, 0, wx.TOP, vgap)
你会得到3个按钮,它们之间的间隙和使用 SetVGap
时类似,同时你也可以通过设置vgap来控制各个位置之间的间隔。
正如其他回答所提到的,你也可以在控件之间插入分隔符来达到相同的效果,但如果你想要的效果类似于网格的vgap,我觉得这样做更简洁(没有额外的“sizer.add”行)。
16
在一个布局管理器中,有几种方法可以添加空白空间。
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(widget, proportion=0, style=wx.ALL, border=5)
上面的代码会在这个控件的四周添加5个像素的边框。如果你想在两个控件之间留一些空隙,可以采取以下几种方法:
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(widget, proportion=0, style=wx.ALL, border=5)
sizer.AddSpacer(10)
# or sizer.Add((0,0))
sizer.Add(anotherWidget, proportion=0, style=wx.ALL, border=5)
使用sizer.Add((0,0))的好处是,你可以把它的比例设置为1,这样就能把后面的控件推到下面去。我用这个方法来更好地控制控件的位置。
更多信息可以查看 http://www.wxpython.org/docs/api/wx.Sizer-class.html