wxpython:同时水平对齐两个控件

时间:2018-06-03 19:34:31

标签: python wxpython sizer

我在水平sizer中有两个控件。如何让其中一个对齐左(或右)而另一个对中?

import wx
from wx.lib.stattext import GenStaticText

class PageNavigator(wx.Panel):

    def __init__(self, parent):
        wx.Panel.__init__(self, parent)
        self.SetBackgroundColour((179, 179, 179))

        self.scrollbar = wx.Slider()
        self.scrollbar.Create(self)

        self.pagenum_txtctrl = GenStaticText(self, label="Page 1")

        sizer = wx.BoxSizer(wx.HORIZONTAL)
        sizer.Add(self.pagenum_txtctrl, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_LEFT, 0)
        #sizer.AddStretchSpacer(1)
        sizer.Add(self.scrollbar, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_RIGHT, 0)
        #sizer.AddStretchSpacer(1)
        self.SetSizer(sizer)

如果我可以指定如何将文本控件的宽度设置为零,那将会很棒。这可能会使分级器正确地使滑块居中。但是,它仍然不是一种优雅的方法。

1 个答案:

答案 0 :(得分:1)

简单BoxSizer中不能包含两个项目,并且每个项目的对齐方式不同。那是不支持的。相反,我只想在(或者可能是其中几个)中添加一个wx.Spacer对象,并将它们展开以帮助您控制布局。

或者您可以使用包含三列的GridSizer并将中间窗口小部件放在中间列中。