PyQt6로 간단한 GUI 만들
PyQt6
는 Python에서 데스크톱 애플리케이션을 만들 수 있도록 도와주는 강력한 GUI 라이브러리입니다. Qt
는 크로스 플랫폼 C++ 프레임워크인 Qt
를 기반으로 하며, PyQt6
는 Qt6
의 기능을 Python에서 사용할 수 있도록 지원합니다. PyQt6
를 사용하면 윈도우, 버튼, 텍스트 상자, 테이블 등 다양한 위젯을 사용하여 복잡한 GUI를 구축할 수 있습니다.
1. PyQt6 설치하기
PyQt6
는 pip
를 사용하여 설치할 수 있습니다:
pip install PyQt6
2. PyQt6로 기본 윈도우 만들기
다음은 PyQt6
를 사용하여 간단한 윈도우를 만드는 예제입니다.
import sys
from PyQt6.QtWidgets import QApplication, QWidget
# QApplication: 전체 GUI 애플리케이션을 관리하는 클래스
app = QApplication(sys.argv)
# QWidget: 기본적인 윈도우를 만드는 클래스
window = QWidget()
window.setWindowTitle('PyQt6 Window')
window.setGeometry(100, 100, 400, 300) # 창 위치와 크기 (x, y, width, height)
# 창 표시
window.show()
# 이벤트 루프 실행
sys.exit(app.exec())
코드 설명
QApplication
: 모든 PyQt6 애플리케이션은 인스턴스를 생성해야 합니다. 이는 애플리케이션의 실행을 관리합니다.QWidget
: PyQt6에서 가장 기본적인 위젯 클래스입니다.QWidget
은 창, 버튼, 텍스트 상자 등을 포함한 다양한 위젯의 기본 클래스입니다.setWindowTitle()
: 창의 제목을 설정합니다.setGeometry()
: 창의 위치와 크기를 지정합니다.x
,y
는 화면에서 창의 시작 위치를 나타내며,width
와height
는 창의 크기를 지정합니다.show()
: 창을 화면에 표시합니다.app.exec()
: 이벤트 루프를 실행하여 창이 닫힐 때까지 애플리케이션을 실행합니다.
3. PyQt6로 버튼과 레이아웃 추가하기
다음 예제에서는 QPushButton
과 QVBoxLayout
을 사용하여 창에 버튼을 추가합니다.
import sys
from PyQt6.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout
def on_click():
print("Button clicked!")
app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle('PyQt6 Button Example')
# 레이아웃 생성
layout = QVBoxLayout()
# 버튼 생성 및 클릭 이벤트 연결
button = QPushButton('Click Me')
button.clicked.connect(on_click)
# 레이아웃에 버튼 추가
layout.addWidget(button)
# 창에 레이아웃 설정
window.setLayout(layout)
window.show()
sys.exit(app.exec())
코드 설명
QVBoxLayout
: 위젯을 수직으로 정렬하는 레이아웃입니다.QPushButton
: 버튼을 생성하는 위젯입니다.clicked.connect(on_click)
: 버튼이 클릭되었을 때on_click
함수를 호출하도록 연결합니다.addWidget()
: 레이아웃에 위젯(버튼)을 추가합니다.setLayout()
: 창에 레이아웃을 설정하여 창 내부에 위젯들을 배치합니다.
4. PyQt6로 텍스트 입력 상자와 레이블 추가하기
다음 예제에서는 QLineEdit
과 QLabel
을 사용하여 텍스트 입력 상자와 레이블을 추가하고, 버튼을 클릭하면 레이블에 입력된 텍스트를 표시합니다.
import sys
from PyQt6.QtWidgets import QApplication, QWidget, QVBoxLayout, QLabel, QLineEdit, QPushButton
def show_text():
input_text = text_input.text()
label.setText(f"Entered: {input_text}")
app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle('PyQt6 Input Example')
layout = QVBoxLayout()
# 텍스트 입력 상자
text_input = QLineEdit()
layout.addWidget(text_input)
# 레이블
label = QLabel('Enter text and click the button')
layout.addWidget(label)
# 버튼
button = QPushButton('Show Text')
button.clicked.connect(show_text)
layout.addWidget(button)
# 레이아웃 설정
window.setLayout(layout)
window.show()
sys.exit(app.exec())
코드 설명
QLineEdit
: 단일 줄 텍스트 입력 상자를 생성하는 위젯입니다.QLabel
: 텍스트를 표시하는 레이블 위젯입니다.text_input.text()
: 텍스트 입력 상자에 입력된 텍스트를 가져옵니다.label.setText()
: 레이블에 표시할 텍스트를 설정합니다.
5. 주요 PyQt6 위젯
QLabel
: 텍스트 또는 이미지를 표시하는 레이블 위젯.QPushButton
: 클릭 가능한 버튼 위젯.QLineEdit
: 단일 줄 텍스트 입력 상자.QTextEdit
: 다중 줄 텍스트 편집기.QComboBox
: 드롭다운 목록을 표시하는 위젯.QCheckBox
: 체크박스 위젯.QRadioButton
: 라디오 버튼 위젯.QVBoxLayout
,QHBoxLayout
: 수직/수평 레이아웃을 정렬하는 레이아웃 관리자.
6. PyQt6의 레이아웃 관리자
QVBoxLayout
: 위젯을 수직으로 정렬하는 레이아웃.QHBoxLayout
: 위젯을 수평으로 정렬하는 레이아웃.QGridLayout
: 그리드 형식으로 위젯을 배치하는 레이아웃.QFormLayout
: 레이블과 입력 필드를 쌍으로 정렬하는 레이아웃.
7. PyQt6와 이벤트 핸들러
PyQt6에서는 위젯에 대한 이벤트(버튼 클릭, 텍스트 입력 등)를 처리하기 위해 시그널-슬롯 메커니즘을 사용합니다. 예를 들어, 버튼 클릭 이벤트를 처리하려면button.clicked.connect(handler_function)
을 사용하여 이벤트를 핸들러 함수에 연결합니다.
요약
- PyQt6 설치:
pip install PyQt6
. - 기본 창 만들기:
QApplication
및QWidget
을 사용하여 간단한 창을 생성할 수 있습니다. - 위젯 추가: 버튼, 레이블, 입력 상자 등 다양한 위젯을 사용할 수 있습니다.
- 레이아웃 설정: 레이아웃 관리자를 사용하여 위젯을 배치할 수 있습니다.
- 이벤트 처리: 버튼 클릭, 텍스트 입력 등 다양한 이벤트를 처리할 수 있습니다.