HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
📟
PyQt 5 Lecture
/
🌐
004 격자(Grid) 레이아웃
🌐

004 격자(Grid) 레이아웃

 
1. 코드2. 상세 내용3. 실행 화면

1. 코드

import sys from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QPushButton, QGridLayout from PyQt5.QtCore import Qt class 격자레이아웃(QWidget): def __init__(self): super().__init__() self.UI초기화() def UI초기화(self): insert = QPushButton('Insert') home = QPushButton('Home') pageUp = QPushButton('Page Up') delete = QPushButton('Delete') end = QPushButton('End') pageDown = QPushButton('Page Down') keyboard = QLabel('KeyBoard') grid = QGridLayout() grid.setSpacing(15) grid.addWidget(insert, 0, 0) grid.addWidget(home, 0, 1) grid.addWidget(pageUp, 0, 2) grid.addWidget(delete, 1, 0) grid.addWidget(end, 1, 1) grid.addWidget(pageDown,1,2) grid.addWidget(keyboard, 2, 0, 2, 3, alignment=Qt.AlignHCenter) self.setLayout(grid) self.setGeometry(300, 300, 350, 200) self.setWindowTitle('Review') self.show() 프로그램무한반복 = QApplication(sys.argv) 실행인스턴스 = 격자레이아웃() 프로그램무한반복.exec_()

2. 상세 내용

격자 레이아웃은 아래와 같이 격자로 레이아웃을 설정하고, 그곳에 아이템을 배치하는 형태입니다.
 
notion image
 
아래 모듈을 import함으로 격자 레이아웃을 사용할 수 있습니다. 앞서 주의를 드렸던 것처럼 다른 레이아웃을 아이템에 배치하려는 상황일 경우 addWidget이 아니라 addLayout을 사용하셔야 합니다.
 
from PyQt5.QtWidgets import QGridLayout
QGridLayout - Qt for Python
Columns and rows behave identically; we will discuss columns, but there are equivalent functions for rows. Normally, each managed widget or layout is put into a cell of its own using addWidget() . It is also possible for a widget to occupy multiple cells using the row and column spanning overloads of addItem() and addWidget() .
QGridLayout - Qt for Python
https://doc.qt.io/qtforpython/PySide2/QtWidgets/QGridLayout.html
QGridLayout - Qt for Python
 
정렬 기능을 사용하기 위해 Qt 라이브러리를 추가합니다. 또한 색상 등 여러가지 옵션을 추가할 수 있습니다.
 
from PyQt5.QtCore import Qt
 
Qt는 색 지정, 정렬에서 많이 쓰이는 라이브러리 이므로 한 번 살펴보시길 권해드립니다.
Qt - Qt for Python
This enum describes the modifier keys. This enum provides shorter names for the keyboard modifier keys supported by Qt. New in version 5.5. New in version 5.14. New in version 4.6. This enum type is used to describe alignment. It contains horizontal and vertical flags that can be combined to produce the required effect.
Qt - Qt for Python
https://doc.qt.io/qtforpython/PySide2/QtCore/Qt.html
Qt - Qt for Python
 
insert = QPushButton('Insert') home = QPushButton('Home') pageUp = QPushButton('Page Up') delete = QPushButton('Delete') end = QPushButton('End') pageDown = QPushButton('Page Down') keyboard = QLabel('KeyBoard')
 
정렬할 버튼들을 생성합니다.
 
grid = QGridLayout() grid.setSpacing(15) grid.addWidget(insert, 0, 0) grid.addWidget(home, 0, 1) grid.addWidget(pageUp, 0, 2) grid.addWidget(delete, 1, 0) grid.addWidget(end, 1, 1) grid.addWidget(pageDown,1,2) grid.addWidget(keyboard, 2,0,2,3,alignment=Qt.AlignHCenter) self.setLayout(grid)
  1. setSpacing(위젯간 간격) : 설정하지 않을 경우 위젯끼리 겹침
  1. addWidget(추가할 위젯, 행, 열)
  1. addWidget(추가할 위젯, 행, 열, 확장시킬 행, 확장시킬 열)
      • 즉, 2행 0열에서 2행 2열(3-1)까지 확장 시킵니다.
      • 특히, 레이아웃에 위젯을 추가할 때, alignment=Qt.Align{위치}처럼 인자를 주어 정렬이 가능
      • 아래 그림과 같이 여러가지 옵션을 주어 정렬이 가능합니다.
        • notion image

3. 실행 화면

notion image