QDialog (대화 상자)
- 정의: QDialog는 대화 상자를 나타내며, 주로 사용자와의 단순한 상호작용을 위해 사용됩니다.
- 주요 특징:
- 모달 모드: QDialog는 모달(modal)로 설정 가능하며, 모달 대화 상자는 열려 있는 동안 부모 창과의 상호작용을 차단합니다.
- exec_()를 사용하면 모달 대화 상자를 표시합니다.
- 경량 구조: 복잡한 레이아웃이나 툴바, 상태바 등이 없는 간단한 창입니다.
- 용도: 경고창, 설정창, 파일 선택창 등.
- 모달 모드: QDialog는 모달(modal)로 설정 가능하며, 모달 대화 상자는 열려 있는 동안 부모 창과의 상호작용을 차단합니다.
- 예시:
from PyQt5.QtWidgets import QDialog, QVBoxLayout, QLabel, QPushButton, QApplication
import sys
class MyDialog(QDialog):
def __init__(self):
super().__init__()
self.setWindowTitle("QDialog Example")
layout = QVBoxLayout()
layout.addWidget(QLabel("This is a QDialog."))
close_button = QPushButton("Close")
close_button.clicked.connect(self.close)
layout.addWidget(close_button)
self.setLayout(layout)
app = QApplication(sys.argv)
dialog = MyDialog()
dialog.exec_()
QMainWindow (메인 윈도우)
- 정의: QMainWindow는 애플리케이션의 주 창(main window) 역할을 하며, 복잡한 UI 구조를 지원합니다.
- 주요 특징:
- 레이아웃 구조:
- QMainWindow는 특정한 레이아웃을 갖추고 있습니다. 예를 들어, 중앙 위젯(center widget), 메뉴바(menu bar), 툴바(toolbar), 상태바(status bar) 등을 기본적으로 지원합니다.
- 복잡한 애플리케이션: 다양한 위젯과 상호작용이 필요한 복잡한 프로그램에 적합합니다.
- 용도: 텍스트 에디터, 이미지 뷰어, IDE 같은 메인 애플리케이션 창.
- 레이아웃 구조:
- 예시:
from PyQt5.QtWidgets import QMainWindow, QApplication, QLabel
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("QMainWindow Example")
self.setCentralWidget(QLabel("This is the central widget."))
app = QApplication([])
window = MainWindow()
window.show()
app.exec_()
QWidget (기본 위젯)
- 정의: QWidget는 PyQt5에서 모든 GUI 위젯의 기본 클래스입니다.
- 주요 특징:
- 다재다능: QWidget은 컨테이너로 사용하거나, 단순한 창으로 사용할 수 있습니다.
- 유연한 레이아웃: 모든 위젯은 QWidget에서 파생되며, 이 위젯을 기반으로 사용자 정의 위젯을 생성할 수 있습니다.
- 용도: 간단한 창, 버튼 그룹, 커스텀 위젯 등 다양한 상황에서 사용.
- 예시:
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QLabel, QApplication
class MyWidget(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle("QWidget Example")
layout = QVBoxLayout()
layout.addWidget(QLabel("This is a QWidget."))
self.setLayout(layout)
app = QApplication([])
widget = MyWidget()
widget.show()
app.exec_()
주요 차이점 비교
특징 | QDialog | QMainWindow | QWidget |
기능 | 단순 대화 상자 | 애플리케이션의 메인 창 | 모든 위젯의 기본 클래스 |
레이아웃 구조 | 독립적 레이아웃 | 메뉴바, 툴바, 상태바 등을 지원 | 커스텀 가능 |
복잡도 | 단순함 | 고급 기능 지원 | 다재다능 |
사용 사례 | 경고창, 설정창 | 텍스트 에디터, 파일 뷰어 등 | 간단한 창, 컨테이너 |
모달 지원 | 기본적으로 모달 지원 | X | X |
'PySide or PyQt' 카테고리의 다른 글
빈 공간 없이 애플리케이션의 크기를 알맞게 조정 (0) | 2025.02.20 |
---|---|
QSizePolicy (0) | 2025.02.20 |
QFileDialog.getOpenFileName()을 사용해서 디렉터리만 선택해 그 경로를 가져오는 코드 (0) | 2025.02.20 |
위젯 생성할 때 self를 파라미터에 왜 넣을까? (0) | 2025.01.15 |