如何在Vertical BoxSizer中设置差距?

G-7*_*-71 6 python user-interface wxwidgets wxpython

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

Mik*_*oll 10

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

sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(widget, proportion=0, style=wx.ALL, border=5)
Run Code Online (Sandbox Code Playgroud)

上面的代码将添加小部件,其四周都有一个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)
Run Code Online (Sandbox Code Playgroud)

执行sizer.Add((0,0))的好处是,如果需要,可以将其添加为1(一)的比例,并将所有以下小部件推送到底部.我用它来给我一点控制小部件的位置.

另见http://www.wxpython.org/docs/api/wx.Sizer-class.html

  • "执行sizer.Add((0,0))是你可以用1(一)的比例添加它"这样做的更简单方法是调用AddStretchSpacer() (4认同)

rav*_*int 5

我猜你的意思是一个垂直盒子大小,就像这样

wxBoxSizer * szr = new( wxVERTICAL );
Run Code Online (Sandbox Code Playgroud)

以下调用将添加10个像素的"垂直间隙"

szr->AddSpacer(10);
Run Code Online (Sandbox Code Playgroud)

在Python中,我想它看起来像这样

szr = wx.BoxSizer( wxVERTICAL )

... add stuff above gap

szr.AddSpacer(10)

... add stuff below gap
Run Code Online (Sandbox Code Playgroud)


joa*_*uin 5

wx.BoxSizers中没有gap参数(如您所说,GridSizers中是否有gap参数)。产生间隙的方法是在小部件中设置边框。这可以用风格来完成: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)
Run Code Online (Sandbox Code Playgroud)

会在顶部和底部带有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)
Run Code Online (Sandbox Code Playgroud)

您将获得3个与您将要使用的按钮类似的间隙,SetVGap并且还可以通过设置vgap来控制插槽之间的间隔。

正如其他答案所表明的那样,您也可以在小部件之间插入分隔符以获得相同的效果,但是在我看来,这更干净(没有其他“ sizer.add”行),如果您想要的是与grid vgap等效的东西。