Wxpython-layout-management
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()
ただし、この*絶対位置*は、次の理由により適切ではありません-
- ウィンドウのサイズを変更しても、ウィジェットの位置は変わりません。
- 解像度が異なるディスプレイデバイスでは、外観が均一でない場合があります。
- フォーム全体の再設計が必要になる可能性があるため、レイアウトの変更は困難です。
wxPython APIは、コンテナ内のウィジェットの配置をよりエレガントに管理するためのレイアウトクラスを提供します。 絶対配置に対するレイアウトマネージャーの利点は次のとおりです-
- ウィンドウ内のウィジェットは自動的にサイズ変更されます。
- 異なる解像度のディスプレイデバイスで均一な外観を保証します。
- 再設計することなく、ウィジェットを動的に追加または削除できます。
レイアウトマネージャーは、wxPythonではSizerと呼ばれます。 Wx.Sizerは、すべてのサイザーサブクラスの基本クラスです。 wx.BoxSizer、wx.StaticBoxSizer、wx.GridSizer、wx.FlexGridSizer、wx.GridBagSizerなどの重要なサイザーのいくつかについて説明しましょう。
S.N. | Sizers & Description |
---|---|
1 |
このサイザーにより、コントロールを行方向または列方向に配置できます。 BoxSizerのレイアウトは、向きの引数(wxVERTICALまたはwxHORIZONTALのいずれか)によって決定されます。 |
2 |
名前が示すように、GridSizerオブジェクトは2次元グリッドを表します。 コントロールは、左から右、上から下の順にグリッドスロットに追加されます。 |
3 |
このサイザーには2次元のグリッドもあります。 ただし、セル内のコントロールのレイアウトには柔軟性がほとんどありません。 |
4 |
GridBagSizerは汎用性の高いサイザーです。 FlexiGridSizerよりも多くの拡張機能を提供します。 子ウィジェットは、グリッド内の特定のセルに追加できます。 |
5 |
StaticBoxSizerは、ボックスサイザーを静的ボックスに配置します。 上部にラベルとともにボックスの周りに境界線を提供します。 |