wxPython-レイアウト管理

GUIウィジェットは、ピクセル単位で測定された絶対座標を指定することにより、コンテナウィンドウ内に配置できます。座標は、コンストラクターのsize引数によって定義されたウィンドウの寸法を基準にしています。ウィンドウ内のウィジェットの位置は、によって定義されます。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ではSizerと呼ばれます。Wx.Sizerは、すべてのサイザーサブクラスの基本クラスです。wx.BoxSizer、wx.StaticBoxSizer、wx.GridSizer、wx.FlexGridSizer、wx.GridBagSizerなどの重要なサイザーについて説明します。

SN サイザーと説明
1 BoxSizer

このサイザーを使用すると、コントロールを行方向または列方向に配置できます。BoxSizerのレイアウトは、その方向引数(wxVERTICALまたはwxHORIZONTALのいずれか)によって決定されます。

2 GridSizer

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

3 FlexiGridSizer

このサイザーには2次元グリッドもあります。ただし、セル内のコントロールのレイアウトには少し柔軟性があります。

4 GridBagSizer

GridBagSizerは用途の広いサイザーです。FlexiGridSizerよりも多くの拡張機能を提供します。子ウィジェットは、グリッド内の特定のセルに追加できます。

5 StaticBoxSizer

StaticBoxSizerは、ボックスサイザーを静的ボックスに配置します。ボックスの周囲に境界線があり、上部にラベルが付いています。