PyQt-レイアウト管理

GUIウィジェットは、ピクセル単位で測定される絶対座標を指定することにより、コンテナウィンドウ内に配置できます。 座標は、setGeometry()メソッドで定義されたウィンドウの寸法に相対的です。

setGeometry()構文

QWidget.setGeometry(xpos, ypos, width, height)

次のコードスニペットでは、300 x 200ピクセルのサイズのトップレベルウィンドウがモニターの位置(10、10)に表示されます。

import sys
from PyQt4 import QtGui

def window():
   app = QtGui.QApplication(sys.argv)
   w = QtGui.QWidget()

   b = QtGui.QPushButton(w)
   b.setText("Hello World!")
   b.move(50,20)

   w.setGeometry(10,10,300,200)
   w.setWindowTitle(“PyQt”)
   w.show()
   sys.exit(app.exec_())

if __name__ == '__main__':
   window()
*PushButton* ウィジェットがウィンドウに追加され、ウィンドウの右に50ピクセル、左上の20ピクセル下の位置に配置されます。

ただし、この*絶対位置*は、次の理由により適切ではありません-

  • ウィンドウのサイズを変更しても、ウィジェットの位置は変わりません。
  • 解像度が異なるディスプレイデバイスでは、外観が均一でない場合があります。
  • フォーム全体の再設計が必要になる可能性があるため、レイアウトの変更は困難です。

元のウィンドウとサイズ変更されたウィンドウ

PyQt APIは、コンテナ内のウィジェットの配置をよりエレガントに管理するためのレイアウトクラスを提供します。 絶対配置に対するレイアウトマネージャーの利点は次のとおりです-

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

以下に、この章で1つずつ説明するクラスのリストを示します。

Sr.No. Classes & Description
1

QBoxLayout

QBoxLayoutクラスは、ウィジェットを垂直または水平に並べます。 その派生クラスは、QVBoxLayout(ウィジェットを垂直に配置するため)およびQHBoxLayout(ウィジェットを水平に配置するため)です。

2

QGridLayout

GridLayoutクラスオブジェクトは、行と列に配置されたセルのグリッドで表示されます。 このクラスにはaddWidget()メソッドが含まれています。 セルの行と列の数を指定することにより、任意のウィジェットを追加できます。

3

QFormLayout

QFormLayoutは、各行がラベルに関連付けられた入力フィールドで構成される2列のフォームを作成する便利な方法です。 慣例として、左の列にはラベルが含まれ、右の列には入力フィールドが含まれます。