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)sizer.AddGrowableCol(col)メソッドを調べる必要があります。拡張するグリッド内の列または行を示すことができます。BoxSizers でおなじみのプロポーションは使用しませんが (したがって、2 つの列が大きくなると、両方とも同じ速度で大きくなります)、拡大するものと拡大しないものを設定できます。

インデックスはゼロベースなので、あなたの説明では のようなものだと思いますgridbagsizer_4.AddGrowableCol(2)が、私のコメントが言うように、wxGlade の命名規則は私を病気にし、確実に伝えるのは難しく、それらのメソッドは GridSizer では利用できません。

興味のある方は、私のフォーム構築とフォーム ダイアログ クラスをカバーした投稿をここで入手できます: Form Builder。ここにすべてを貼り付けようとするよりも、添付ファイルを含めることができる私のサイトに投稿する方が簡単でした.

于 2011-05-24T17:08:32.070 に答える