wxPython:如何修复网格大小调整器的一部分的大小

时间:2011-05-24 16:41:45

标签: python wxpython sizer

我想要做的是创建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()

1 个答案:

答案 0 :(得分:1)

如果您使用的是GridSizer,我建议您先查看GridBagSizer

一旦您确定它是否可用,那么您可能需要查看sizer.AddGrowableRow(row)sizer.AddGrowableCol(col)方法。它们允许您指示网格中展开的列或行。他们没有像BoxSizers那样熟悉使用比例(所以如果两列增长它们都以相同的速度增长),但是你可以设置一些扩展而另一些不扩展。

索引是基于零的,所以根据你的描述我会猜到像gridbagsizer_4.AddGrowableCol(2)这样的东西,但是就像我的评论所说的那样,wxGlade的命名惯例让我感到恶心并且很难确定,这些方法不会可以在GridSizer上使用。

对于任何感兴趣的人士,我的表格构建和表单对话框类都有一个帖子:Form Builder。在我可以包含附件的网站上发布它比在这里尝试粘贴它更容易。