✔ Python/4. GUI Programming

[PyQt6] 다양한 위젯(Qwidget) 적용하기

  • -
주제: 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에서 사용할 수 있는 다양한 위젯을 소개하려고 합니다.


이번 포스팅에서 모든 위젯의 상세 사용법 대신, 자주 사용할 법한 위젯을 중심으로 소개하도록 하겠습니다.

'수많은 위젯을 어떻게 다 포스팅할까?'라는 고민을 통해 이해하기 쉽게 하기 위해 각 위젯의 이름을 포함한 그림을 첨부하였습니다.
(아래의 이미지를 사용하실 분들은 댓글 및 출처를 밝혀주세요)

다양한 pyqt6 위젯 이해하기

 

위에 그림과 같은 위젯을 생성할 수 있는 전체코드입니다.

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-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
반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.