今回はPySide6を用いて,ボタンを配置していきます.HTMLのようなブロック構造を採用しつつ,数値による指定を行わなくても簡単にブロックを配置することができます.
記述例
まず,記述例から見ていきます.解説は後で行います,
from PySide6.QtWidgets import QApplication, QHBoxLayout, QVBoxLayout, QPushButton, QWidget
app = QApplication([])
window = QWidget()
main_layout = QVBoxLayout()
# サブレイアウトを作成
sub_layout = QHBoxLayout()
button1 = QPushButton('Button 1')
button2 = QPushButton('Button 2')
sub_layout.addWidget(button1)
sub_layout.addWidget(button2)
# サブレイアウトをメインレイアウトに追加
main_layout.addLayout(sub_layout)
# 別のボタンをメインレイアウトに追加
button3 = QPushButton('Button 3')
main_layout.addWidget(button3)
window.setLayout(main_layout)
window.show()
app.exec()
実行結果
図1のように分割されたボタンが出現します.

図1 ボタンの表示例
解説
図2 エリアの分割図
垂直に分割した後に,一つ目のブロックだけ,水平に分割しています.
QVBoxLayoutとQHBoxLayout
分割方法の決め方には下記の2種類があります.
QVBoxLayoutはvertical(垂直)に要素の数分,分割するクラスです.
図3 QVBoxLayout:vertical(垂直)な分割の例
一方,QHBoxLayoutは,horizontal(水平)に要素の数分,分割するクラスです.
例を図4に示します.
図4 QHBoxLayout:horizontal(水平)な分割の例
addwidgetとaddlayout
addWidget
addWidget メソッドは、レイアウトにウィジェット(例えば、ボタンやテキストボックスなどのUI要素)を追加するために使用されます。このメソッドを使うと、レイアウト内の特定の位置にウィジェットを配置できます。
addLayout
addLayout メソッドは、レイアウトの中にさらに別のレイアウトを追加するために使用されます。これは、ネストされたレイアウトを構築する際に便利です。たとえば、垂直レイアウトの中に水平レイアウトを配置して、複雑なUIレイアウトを作成する場合などに使用します。
イメージ図としては図5のようになります.
図5 addwidgetとaddlayoutによる層の種類



