주제: PyQt6 Qwidget의 모든 것
작성: 2024-01-14
안녕하세요, 루카스입니다.
이전 시리즈에서 "PyQt6로 쉽게 GUI을 만들기"로 GUI를 예제를 진행했습니다.
🖥️ PyQt6로 쉽게 GUI 만들기
1. 구조 이해 - 2023.10.24 - [✔ Python/4. GUI Programming] - [PyQt6] 기본적인 구조부터 이해하기
2. 코드 구현 - 2023.10.25 - [✔ Python/4. GUI Programming] - [PyQt6] QListWidget 활용한 GUI 구현[1/2] (코드 포함)
3. 코드 개선 - 2023.10.24 - [✔ Python/4. GUI Programming] - [PyQt6] QListWidget 활용한 GUI구현 [2/2] (코드 포함)
4. 테마 적용 - 2023.10.25 - [✔ Python/4. GUI Programming] - [PyQt6] GUI Stylesheet Theme 적용하기 : qt_material
하지만, 개개인의 원하는 GUI 만들려면, pyqt6에서 지원하는 위젯에는 어떤 것들이 있는지 미리 파악해야 작업의 효율성이 높아집니다.
그래서 이 포스팅은 PyQt6에서 사용할 수 있는 다양한 위젯을 소개하려고 합니다.
이번 포스팅에서 모든 위젯의 상세 사용법 대신, 자주 사용할 법한 위젯을 중심으로 소개하도록 하겠습니다.
1. 다양한 위젯(Qwidget)
'수많은 위젯을 어떻게 다 포스팅할까?'라는 고민을 통해 이해하기 쉽게 하기 위해 각 위젯의 이름을 포함한 그림을 첨부하였습니다.
(아래의 이미지를 사용하실 분들은 댓글 및 출처를 밝혀주세요)
2. 전체 코드
위에 그림과 같은 위젯을 생성할 수 있는 전체코드입니다.
import sys
from PyQt6.QtCore import Qt
from PyQt6.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QWidget, QCheckBox, QComboBox, QDateEdit, QDateTimeEdit, QDial, QDoubleSpinBox, QFontComboBox, QLabel, QLCDNumber, QLineEdit, QProgressBar, QPushButton, QRadioButton, QSlider, QSpinBox, QTimeEdit, QCalendarWidget
class MyApp(QMainWindow):
def __init__(self):
super().__init__()
self.layout = QVBoxLayout() # Define self.layout here
self.initUi()
def initUi(self):
self.setWindowTitle("PyQt6 Widget Test")
self.setGeometry(100, 100, 800, 600) # Adjusted window size for demonstration
layout = self.layout
widgets = [
QCheckBox("Checkbox"),
QComboBox(),
QDateEdit(),
QDateTimeEdit(),
QDial(),
QDoubleSpinBox(),
QFontComboBox(),
QLCDNumber(),
QLabel("Label"),
QLineEdit(),
QProgressBar(),
QPushButton("Button"),
QRadioButton("Radio Button"),
QSlider(Qt.Orientation.Horizontal),
QSpinBox(),
QTimeEdit(),
QCalendarWidget(),
]
for widget in widgets:
layout.addWidget(widget)
widget = QWidget()
widget.setLayout(layout)
self.setCentralWidget(widget)
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MyApp()
window.show()
sys.exit(app.exec())
3. 코드 설명
3-1. 특징적인 위젯들
전체코드에서 사용한 위젯에 대해 간단하게 정리하면 다음과 같습니다.
- QCheckBox: 체크 박스
- QComboBox: 드롭다운 메뉴
- QDateEdit: 날짜 입력 필드
- QDateTimeEdit: 날짜와 시간 입력 필드
- QDial: 다이얼
- QDoubleSpinBox: 소수점 숫자 입력 필드
- QFontComboBox: 글꼴 선택 메뉴
- QLCDNumber: 숫자를 표시하는 위젯
- QLabel: 텍스트 또는 이미지 표시 위젯
- QLineEdit: 한 줄 텍스트 입력
- QProgressBar: 작업 진행 상태 표시
- QPushButton: 클릭 가능한 버튼
- QRadioButton: 라디오 버튼
- QSlider: 슬라이더
- QSpinBox: 정수 입력 필드
- QTimeEdit: 시간 입력 필드
- QCalendarWidget: 달력 표시 위젯
3-2. MyApp Class
MyApp Class는 주 애플리케이션 윈도우를 정의합니다.
- __init__ 메서드: 기본 QMainWindow 생성자를 호출하고, UI를 초기화합니다.
- initUi 메서드: 다양한 위젯들을 초기화하고, 애플리케이션 윈도우의 타이틀과 기하학적 속성을 설정합니다. 상태바에는 진행바(QProgressBar)를 추가합니다.
- addDialToLayout 메서드: QDial과 QLCDNumber 위젯을 생성하고, 다이얼의 값 변경 시 LCD 숫자를 업데이트하도록 연결합니다.
3-3. 애플리케이션 실행
마지막 섹션은 스크립트가 직접 실행될 때 QApplication 인스턴스를 생성하고, MyApp 윈도우를 표시한 후, 이벤트 루프를 시작합니다.
728x90
반응형
'Python > 3️⃣ 프로그래밍' 카테고리의 다른 글
[위성궤도] 위성고유번호 NORAD ID란? (3) | 2024.07.10 |
---|---|
[위성궤도] NOAA에서 소유 및 운영 중인 위성들 (1) | 2024.07.09 |
[PyQt6] GUI Stylesheet Theme 적용하기 : qt_material (6) | 2023.10.29 |
[PyQt6] QListWidget 활용한 GUI구현 [2/2] (코드 포함) (2) | 2023.10.29 |
[PyQt6] QListWidget 활용한 GUI 구현[1/2] (코드 포함) (0) | 2023.10.25 |