2

我想要做的是创建 3 列,将随着窗口的展开而展开。但我想对其进行限制,以便不同的列扩展到不同的最大数量。

我在这里所做的是使用 wxGlade 创建一个带有 1 行和 3 列的网格尺寸器的框架。我希望 Part1 具有固定宽度“A”,Part2 具有固定宽度“B”,Part3 能够正常扩展。

我怎么做?

#!/usr/bin/env python
# -*- coding: iso-8859-15 -*-
# generated by wxGlade 0.6.3 on Tue May 24 11:35:21 2011

import wx

# begin wxGlade: extracode
# end wxGlade



class MyFrame1(wx.Frame):
    def __init__(self, *args, **kwds):
        # begin wxGlade: MyFrame1.__init__
        kwds["style"] = wx.DEFAULT_FRAME_STYLE
        wx.Frame.__init__(self, *args, **kwds)
        self.panel_1 = wx.Panel(self, -1)
        self.sizer_10_staticbox = wx.StaticBox(self.panel_1, -1, "Part2")
        self.sizer_11_staticbox = wx.StaticBox(self.panel_1, -1, "Part3")
        self.sizer_9_staticbox = wx.StaticBox(self.panel_1, -1, "Part1")

        self.__set_properties()
        self.__do_layout()
        # end wxGlade

    def __set_properties(self):
        # begin wxGlade: MyFrame1.__set_properties
        self.SetTitle("frame_2")
        # end wxGlade

    def __do_layout(self):
        # begin wxGlade: MyFrame1.__do_layout
        sizer_8 = wx.BoxSizer(wx.VERTICAL)
        grid_sizer_4 = wx.GridSizer(1, 3, 0, 0)
        sizer_11 = wx.StaticBoxSizer(self.sizer_11_staticbox, wx.HORIZONTAL)
        sizer_10 = wx.StaticBoxSizer(self.sizer_10_staticbox, wx.HORIZONTAL)
        sizer_9 = wx.StaticBoxSizer(self.sizer_9_staticbox, wx.HORIZONTAL)
        grid_sizer_4.Add(sizer_9, 1, wx.EXPAND, 0)
        grid_sizer_4.Add(sizer_10, 1, wx.EXPAND, 0)
        grid_sizer_4.Add(sizer_11, 1, wx.EXPAND, 0)
        self.panel_1.SetSizer(grid_sizer_4)
        sizer_8.Add(self.panel_1, 1, wx.EXPAND, 0)
        self.SetSizer(sizer_8)
        sizer_8.Fit(self)
        self.Layout()
        # end wxGlade

# end of class MyFrame1


if __name__ == "__main__":
    app = wx.PySimpleApp(0)
    wx.InitAllImageHandlers()
    frame_2 = MyFrame1(None, -1, "")
    app.SetTopWindow(frame_2)
    frame_2.Show()
    app.MainLoop()
4

1 回答 1

1

如果您使用的是GridSizer,我可能会建议您改用 GridBagSizer

一旦您决定它是否可用,那么您可能需要研究sizer.AddGrowableRow(row)andsizer.AddGrowableCol(col)方法。它们允许您指示网格中扩展的列或行。它们不使用您在 BoxSizer 中熟悉的使用比例(因此,如果两列增长,它们都以相同的速率增长),但您可以设置一些扩展而其他不扩展。

索引是从零开始的,所以根据你的描述,我猜想是这样的gridbagsizer_4.AddGrowableCol(2),但就像我的评论所说,wxGlade 的命名约定让我生病了,而且很难确定,而且这些方法在 GridSizer 上不可用。

对于任何感兴趣的人,这里有一篇介绍我的表单构建和表单对话框类的帖子:Form Builder。将其发布在我可以包含附件的网站上比尝试将其全部粘贴到此处更容易。

于 2011-05-24T17:08:32.070 回答