Wxpython-wx-flexigridsizer

提供:Dev Guides
移動先:案内検索

wxPython-FlexiGridSizer

このサイザーには2次元のグリッドもあります。 ただし、セル内のコントロールのレイアウトには柔軟性がほとんどありません。 同じ行のすべてのコントロールは同じ高さで、同じ列のすべてのコントロールは同じ幅ですが、各セルのサイズはGridSizerのように均一ではありません。

単一の列/行のセルの幅や高さは、AddGrowableRow()およびAddGrowableCol()メソッドによって拡張できます。

*wx.FlexiGridSizer* クラスコンストラクターは4つのパラメーターを取ります-
Wx.FlexiGridSizer(rows, cols, vgap, hgap)

wx.FlexiGridSizerの主要なメソッドの簡単な説明を以下に示します-

S.N. Methods & Description
1

AddGrowableCol()

余分な高さが利用可能な場合に拡大する特定のインデックスの列を指定します。

2

AddGrowRow()

追加の幅が利用可能な場合に拡大する特定のインデックスの行を指定します。

3

SetFlexibleDirection()

サイザーの柔軟性が行、列、またはその両方に影響するかどうかを指定します。

2列のフォームは、次のコードで設計されています。 最初の列にはラベルが含まれ、2番目の列にはテキストボックスが含まれます。 2番目の列は拡張可能に設定されています。 同様に、3行目は拡張可能に設定されています。 (行インデックスと列インデックスは0から始まることに注意してください)。 AddGrowableCol()およびAddGrowableRow()関数の2番目のパラメーターは、成長の割合です。

fgs.AddGrowableRow(2, 1)
fgs.AddGrowableCol(1, 1)

コード全体は次のとおりです-

import wx

class Example(wx.Frame):

   def __init__(self, parent, title):
      super(Example, self).__init__(parent, title = title, size = (300, 250))

      self.InitUI()
      self.Centre()
      self.Show()

   def InitUI(self):
      panel = wx.Panel(self)

      hbox = wx.BoxSizer(wx.HORIZONTAL)

      fgs = wx.FlexGridSizer(3, 2, 10,10)

      title = wx.StaticText(panel, label = "Title")
      author = wx.StaticText(panel, label = "Name of the Author")
      review = wx.StaticText(panel, label = "Review")

      tc1 = wx.TextCtrl(panel)
      tc2 = wx.TextCtrl(panel)
      tc3 = wx.TextCtrl(panel, style = wx.TE_MULTILINE)

      fgs.AddMany([(title), (tc1, 1, wx.EXPAND), (author),
         (tc2, 1, wx.EXPAND), (review, 1, wx.EXPAND), (tc3, 1, wx.EXPAND)])
      fgs.AddGrowableRow(2, 1)
      fgs.AddGrowableCol(1, 1)
      hbox.Add(fgs, proportion = 2, flag = wx.ALL|wx.EXPAND, border = 15)
      panel.SetSizer(hbox)

app = wx.App()
Example(None, title = 'FlexiGrid Demo')
app.MainLoop()

上記のコードは、次の出力を生成します-

FlexiGridDemo出力