wx.FlexGridSizer (wxPython) | Python-izm

FlexGridSizer

前項で紹介したGridSizerをより柔軟な形にしたのが、FlexGridSizerとなります。GridSizerは配置領域が全て同じサイズとなってしまうのに対し、FlexGridSizerでは行指定、列指定でサイズの変更が可能です。もちろん全てが同じサイズの方が都合の良い場合もあるので、用途によって使い分けましょう。配置領域等の使い方は同じなので、詳細はGridSizerをご確認ください。本項では相違点のみ解説します。

サイズの変更指定

23行目AddGrowableRowの引数にサイズを変更したい行インデックスを指定しています。24行目のAddGrowableColでは列を指定しています。

import wx

application = wx.App()
frame = wx.Frame(None, wx.ID_ANY, 'テストフレーム', size=(300, 300))

panel = wx.Panel(frame, wx.ID_ANY)
panel.SetBackgroundColour('#AFAFAF')

button_1 = wx.Button(panel, wx.ID_ANY, '1')
button_2 = wx.Button(panel, wx.ID_ANY, '2')
button_3 = wx.Button(panel, wx.ID_ANY, '3')
button_4 = wx.Button(panel, wx.ID_ANY, '4')
button_5 = wx.Button(panel, wx.ID_ANY, '5')
button_6 = wx.Button(panel, wx.ID_ANY, '6')

layout = wx.FlexGridSizer(rows=3, cols=2, gap=(0, 0))
layout.Add(button_1, flag=wx.GROW)
layout.Add(button_2, flag=wx.GROW)
layout.Add(button_3, flag=wx.GROW)
layout.Add(button_4, flag=wx.GROW)
layout.Add(button_5, flag=wx.GROW)
layout.Add(button_6, flag=wx.GROW)
layout.AddGrowableRow(0)
layout.AddGrowableCol(1)

panel.SetSizer(layout)

frame.Show()
application.MainLoop()

1行目と2列目をサイズ変更するように指定しました。このサンプルではのボタンのみ通常のサイズとなります。