最新のWeb開発のチュートリアル
 

wxPythonレイアウト管理


GUIウィジェットは、ピクセル単位の絶対座標を指定することにより、コンテナウィンドウの内側に配置することができます。 座標は、コンストラクタのサイズ引数で定義されたウィンドウの大きさに対するものです。 ウィンドウ内のウィジェットの位置は以下のように定義されposそのコンストラクタの引数。

import wx  

app = wx.App() 
window = wx.Frame(None, title = "wxPython Frame", size = (300,200)) 
panel = wx.Panel(window) 
label = wx.StaticText(panel, label = "Hello World", pos = (100,50)) 
window.Show(True) 
app.MainLoop()

このAbsolute Positioningしかし、以下の理由により適していません-

  • ウィジェットの位置は、ウィンドウのサイズが変更された場合でも変わりません。

  • 外観は、異なる解像度の異なる表示装置上に均一でなくてもよいです。

  • それはフォーム全体を設計し直す必要があるかもしれないようなレイアウトでの変更は困難です。

wxPythonのAPIは、コンテナ内のウィジェットの配置のよりエレガントな管理のためのレイアウトクラスを提供します。 絶対位置上のレイアウトマネージャの利点があります -

  • ウィンドウ内のウィジェットは自動的にリサイズされます。
  • 異なる解像度を持つディスプレイデバイス上で均一な外観を保証します。
  • ウィジェットを追加または削除すると、動的に再設計することなく可能です。

レイアウトマネージャはwxPythonの中サイザーと呼ばれています。 Wx.Sizerはすべてサイザーサブクラスの基本クラスです。 私たちは、このようなwx.BoxSizer、wx.StaticBoxSizer、wx.GridSizer、wx.FlexGridSizer、およびwx.GridBagSizerなどの重要なサイザーのいくつかを説明しましょう。

SN サイザー&解説
1 BoxSizer

この寸法測定器は、コントロールは、行方向または列方向の様式で配置されることを可能にします。 BoxSizerのレイアウトは、その向き引数によって決定されます(either wxVERTICAL or wxHORIZONTAL)

2 GridSizer

名前が示すように、GridSizerオブジェクトは、2次元のグリッドを提示します。 コントロールは左から右及び上から下へ順にグリッドスロットに追加されます。

3 FlexiGridSizer

このサイザーはまた、2次元のグリッドを持っています。 しかし、それは細胞内のコントロールのレイアウトに少しより多くの柔軟性を提供します。

4 GridBagSizer

GridBagSizerは万能サイザーです。 それはFlexiGridSizerよりも強化されています。 子ウィジェットは、グリッド内の特定の細胞に添加することができます。

5 StaticBoxSizer

StaticBoxSizerは、静的な箱の中に箱サイザーを置きます。 これは、上部のラベルと一緒に箱の周囲に境界線を提供します。