PyQt5 チュートリアル - グリッドレイアウト Grid Layout

胡金庫 2023年1月30日
  1. PyQt5 グリッドレイアウト
  2. PyQt5 グリッドレイアウトスパン
  3. PyQt5 グリッドレイアウトストレッチ
PyQt5 チュートリアル - グリッドレイアウト Grid Layout

このチュートリアルでは、PyQt5 の別のレイアウト方法であるグリッドレイアウトを学習します。

PyQt5 グリッドレイアウト

この QGridLayout クラスは、ウィジェットをグリッドに配置します。QGridLayout 使用可能なスペースを取得し、行と列に分割してから、各ウィジェットを正しいセルに配置します。

import sys
from PyQt5.QtWidgets import QWidget, QGridLayout, QPushButton, QApplication


class basicWindow(QWidget):
    def __init__(self):
        super().__init__()
        grid_layout = QGridLayout()
        self.setLayout(grid_layout)

        for x in range(3):
            for y in range(3):
                button = QPushButton(str(str(3 * x + y)))
                grid_layout.addWidget(button, x, y)

        self.setWindowTitle("Basic Grid Layout")


if __name__ == "__main__":
    app = QApplication(sys.argv)
    windowExample = basicWindow()
    windowExample.show()
    sys.exit(app.exec_())

コードでは、

grid_layout = QGridLayout()

QWidgetsQGridLayout は、レイアウト形式をグリッドレイアウトに指定します。

self.setLayout(grid_layout)

レイアウトを、定義したばかりのレイアウトメソッド(グリッドレイアウト)に設定します。

grid_layout.addWidget(button, x, y)

QGridLayout クラスの addWidget メソッドは、ウィジェット buttonx , y のセルに配置します。左上隅の座標のデフォルトは (0,0) です。

PyQt5 グリッドレイアウト

PyQt5 グリッドレイアウトスパン

通常、各ウィジェットはグリッドの 1つのセルを占有しますが、ウィジェットは addWidget() オーバーロードメソッドを使用して、行と列をより多くのセルにまたがることもできます。

addWidget(self, QWidget, row, column, rowSpan, columnSpan, Qt.Alignment alignment=0)

3 番目と 4 番目のパラメーターは行と列にまたがっており、デフォルトでは 1 です。スパニングが -1 の場合、セルウィジェットは右端または下端に拡張されます。

import sys
from PyQt5.QtWidgets import QWidget, QGridLayout, QPushButton, QApplication


class basicWindow(QWidget):
    def __init__(self):
        super().__init__()
        grid_layout = QGridLayout()
        self.setLayout(grid_layout)

        button = QPushButton("1-3")
        grid_layout.addWidget(button, 0, 0, 1, 3)

        button = QPushButton("4, 7")
        grid_layout.addWidget(button, 1, 0, -1, 1)

        for x in range(1, 3):
            for y in range(1, 3):
                button = QPushButton(str(str(3 * x + y)))
                grid_layout.addWidget(button, x, y)

        self.setWindowTitle("Basic Grid Layout")


if __name__ == "__main__":
    app = QApplication(sys.argv)
    windowExample = basicWindow()
    windowExample.show()
    sys.exit(app.exec_())

PyQt5 グリッドレイアウトスパン

PyQt5 グリッドレイアウトストレッチ

setColumnStretchsetRowStretch は列または行の伸長因子を設定します。ストレッチ係数は、他の列/行と比較した相対的な数値です。より高い係数の列/行は、使用可能なスペースをより多く使用します。

import sys
from PyQt5.QtWidgets import QWidget, QGridLayout, QPushButton, QApplication


class basicWindow(QWidget):
    def __init__(self):
        super().__init__()
        grid_layout = QGridLayout()
        self.setLayout(grid_layout)

        for x in range(3):
            for y in range(3):
                button = QPushButton(str(str(3 * x + y)))

                grid_layout.addWidget(button, x, y)

            grid_layout.setColumnStretch(x, x + 1)

        self.setWindowTitle("Basic Grid Layout")


if __name__ == "__main__":
    app = QApplication(sys.argv)
    windowExample = basicWindow()
    windowExample.show()
    sys.exit(app.exec_())
grid_layout.setColumnStretch(x, x+1)

3 行のストレッチ係数を 1, 2, 3 それぞれに設定します。したがって、列幅の順序は Third Column > Second Column > First Column です。

PyQt5 グリッドレイアウトストレッチ

著者: 胡金庫
胡金庫 avatar 胡金庫 avatar

DelftStack.comの創設者です。Jinku はロボティクスと自動車産業で8年以上働いています。自動テスト、リモートサーバーからのデータ収集、耐久テストからのレポート作成が必要となったとき、彼はコーディングスキルを磨きました。彼は電気/電子工学のバックグラウンドを持っていますが、組み込みエレクトロニクス、組み込みプログラミング、フロントエンド/バックエンドプログラミングへの関心を広げています。

LinkedIn Facebook