wxPython StaticText 添加到 sizer

wxPython StaticText added to sizer

我有一个带有标题的 sizer:

    self.label = wx.StaticText(self, -1, _("Elements:"))
    sizer_1 = wx.FlexGridSizer(2, 5, 5, 10)
    sizer_1.Add(self.label, 0, 0, 0)

我在 sizer 中还有许多其他 object,稍后会添加。 我希望标签是 sizer 第一行中唯一的 object。 无论我如何使用列出的标志 here 我找不到如何设置它。 (我不想把整条线的标签都刮掉)

我希望它看起来像这样: (order/number 下面的元素是不敬的)

Elements
1 2 3 4 5 6 7
8 9 

目前我得到的是:

Elements 1 2 3
4 5 6 etc...

数字代表其他 object 文本。

创建一个垂直方向的BoxSizer。将标签和 FlexGridSizer 添加到 BoxSizer。将 box sizer 设置为 panel/frame/whatever 而不是 FlexGridSizer 的 sizer。那应该就可以了。

将 sizer 嵌套在彼此内部是一项强大且非常有用的学习。

我不确定python但是对于C++,我们可以使用wxStaticBoxSizer,因为它支持标签显示,与tkinter中的LabelFrame或group/frame其他一些语言中的一样。

你应该先用其他BoxSizer/GridBoxSizer布局你的gui,然后在里面添加StaticBoxSizer,你会得到更好的外观。

例如:

wxStaticBoxSizer *sizer = new wxStaticBoxSizer(wxVERTICAL, panel, "Label here");