PyQt5 튜토리얼-그리드 레이아웃

Jinku Hu 2023년1월30일
  1. PyQt5 그리드 레이아웃
  2. PyQt5 그리드 레이아웃 범위
  3. PyQt5 그리드 레이아웃 스트레치
PyQt5 튜토리얼-그리드 레이아웃

이 튜토리얼에서 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 그리드 레이아웃 범위

일반적으로 각 위젯은 그리드의 하나의 셀을 소비하지만, 행과 열 스패닝 번호 addWidget()오버로드 된 메소드를 사용하여 위젯이 더 많은 셀을 차지할 수도 있습니다.

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

세 번째 및 네 번째 매개 변수는 기본적으로 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)

세 행의 신축 계수를 각각 ‘1, 2, 3’으로 설정하므로 열 너비의 순서는 Third Column> Second Column> First Column 입니다.

PyQt5 그리드 레이아웃 스트레치

작가: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook