본문 바로가기

프로그래밍/PyQt5 GUI

14. 그리드 레이아웃

그리드 레이아웃은 위젯의 공간을 행(row)과 열(column)로 구분합니다.

세 개의 라벨, 두 개의 라인에디터, 하나의 텍스트 에디터를 그리드 레이아웃에 배치합니다.

14-1 예제: ex13

import sys
from PyQt5.QtWidgets import (QApplication, QWidget, QGridLayout, QLabel, QLineEdit, QTextEdit)

class MyApp(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        gridLayout = QGridLayout(self)
        #self.setLayout(gridLayout)

        gridLayout.addWidget(QLabel('Title'), 0, 0)
        gridLayout.addWidget(QLabel('Author'), 1, 0)
        gridLayout.addWidget(QLabel('Review'), 2, 0)

        gridLayout.addWidget(QLineEdit(), 0, 1)
        gridLayout.addWidget(QLineEdit(), 1, 1)
        gridLayout.addWidget(QTextEdit(), 2, 1)

        self.setWindowTitle('QGridLayout')
        self.setGeometry(300, 300, 300, 200)
        self.show()

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = MyApp()
    sys.exit(app.exec_())

14-2

gridLayout = QGridLayout()
self.setLayout(gridLayout)
  • QGridLayout 을 만들고, QWidget에 레이아웃을 설정합니다.
gridLayout.addWidget(QLabel('Title'), 0, 0)
gridLayout.addWidget(QLabel('Author'), 1, 0)
gridLayout.addWidget(QLabel('Review'), 2, 0)

gridLayout.addWidget(QLineEdit(), 0, 1)
gridLayout.addWidget(QLineEdit(), 1, 1)
gridLayout.addWidget(QTextEdit(), 2, 1)
  • addWidget() 메서드를 사용하여 레이아웃에 위젯을 배치한다.
  • addWidget의 첫 번째 파라미터는 배치할 위젯, 두 번째와 세 번째는 각각 행과 열 번호를 입력합니다.
  • 라벨은 수직으로 배치하고, 그 옆 수평으로 다시 라인텍스트와 텍스트에디터를 수직으로 배치합니다.

14-3 결과

'프로그래밍 > PyQt5 GUI' 카테고리의 다른 글

16. QLabel  (0) 2021.07.23
15. QPushButton  (0) 2021.07.23
13. 박스 레이아웃  (0) 2021.07.22
12. 절대적 배치  (0) 2021.07.22
11. StyleSheet (스타일 꾸미기)  (0) 2021.07.22