如何在Vertical BoxSizer中设置差距?

时间:2011-10-04 12:17:23

标签: python user-interface wxpython wxwidgets

如何在Vertical BoxSizer中设置差距? Vertival BoxSizer中的SetVGap的相似或替代方法是什么(它在GridSizer中设置sizer中单元格之间的垂直间隙(以像素为单位))?

4 个答案:

答案 0 :(得分:9)

有几种方法可以在sizer中添加空格。

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

答案 1 :(得分: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

答案 2 :(得分:4)

wx.BoxSizer中没有间隙参数(如你所说,GridSizers中有)。创建间隙的方法是在窗口小部件中设置边框。这可以使用以下样式完成:wx.ALLwx.BOTTOM和/或wx.TOP

例如:

szr = wx.BoxSizer(wx.VERTICAL)
szr.Add(self.button_1, 0, wx.TOP|wx.BOTTOM|wx.ALIGN_CENTER_HORIZONTAL, 5)

将在Box中添加一个居中的小部件(我的代码中的一个按钮),顶部和底部有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控制插槽之间的分隔。

正如其他答案所示,您也可以在小部件之间插入分隔符以获得相同的效果,但这似乎更清晰(没有附加的“sizer.add”行),如果您想要的是与网格vgap相同的东西。

答案 3 :(得分:2)

也可能很有趣:在

中找到标题“wx.BoxSizer”

http://zetcode.com/wxpython/layout/