在wxPython中将对象对齐到sizer的底部

时间:2018-09-05 17:46:01

标签: python wxpython wxwidgets wxpython-phoenix

一段时间以来,我一直在尝试将一个按钮添加到sizer的底部,但似乎无法使其正常工作。 Ive提供了我设计中的代码以及设计错误的ascii布局。我希望后退按钮位于相框的左下角。

    ---------------------------------
    |          TITLE                 |
    |                                |
    |                                |
    |                                |
    |   BUTTON1           BUTTON2    |
    |                                |
    |                                |
    |                                |
    |                                |
    |                                |
    |                                |
    | BACK BUTTON                    |
    ---------------------------------

代码:

    Title = wx.StaticText(self, wx.ID_ANY, "Title", style=wx.ALIGN_CENTER)
    Title.SetMinSize((100, 100))
    Title.SetFont(wx.Font(20, wx.DEFAULT, wx.NORMAL, wx.NORMAL, 0, ""))

    self.Button1 = wx.Button(self, wx.ID_ANY, "Button 1")
    self.Button2 = wx.Button(self, wx.ID_ANY, "Button 2")
    self.BackButton = wx.Button(self, wx.ID_ANY, "Back")

    SplitSizer = wx.BoxSizer(wx.VERTICAL)
    ButtonSizer = wx.BoxSizer(wx.HORIZONTAL)
    SplitSizer.Add(Title, 0, wx.ALIGN_CENTER, 0)
    ButtonSizer.Add(self.Button1, 0, 0, 0)
    ButtonSizer.Add(self.Button2, 0, 0, 0)
    SplitSizer.Add(ButtonSizer, 0, wx.EXPAND, 0)
    SplitSizer.Add(self.BackButton, 0, wx.ALIGN_BOTTOM | wx.ALIGN_LEFT | wx.ALL, 0)

    self.SetSizer(SplitSizer)

编辑: 我设置框架,使窗口无法调整大小。输出的屏幕截图如下所示。

https://imgur.com/gallery/JFZRVly

1 个答案:

答案 0 :(得分:1)

在尺寸调整器中对齐项目只能在与尺寸调整器主方向成横向的方向上进行。因此,在ALIGN_BOTTOM大小调整器VERTICAL中使用SplitSizer是没有意义的(在wxWidgets 3.1+中,您会得到断言失败,向您解释这一点)。

相反,您需要通过在其前面添加可拉伸项(即非零比例(通常仅为1)的项)将按钮推至底部。最简单的方法是添加可拉伸的垫片,即在将“后退”按钮添加到定径器之前添加SplitSizer.AddStretchSpacer()

请注意,这都会将“后退”按钮推到底部,而另两个按钮推到顶部。如果您想避免这种情况,例如通过使其他按钮居中,您知道该怎么做:只需在它们前面添加另一个拉伸垫片即可。