728x90
728x90
다이얼로그(Dialog)
들어가며
- PyQt에서 다이얼로그(Dialog)의 의미와 종류를 간단하게 정리해본다.

다이얼로그(Dialog)
개념
- 사용자와 상호작용하기 위해 나타나는 별개의 창
- 일반적으로 다이얼로그는 사용자로부터 입력을 받거나, 확인 및 경고 메시지를 표시하는 데 사용된다.
종류
- PyQt에서는 주로 @QDialog@ 클래스를 사용하여 다이얼로그를 구현한다.
- PyQt에서 다이얼로그는 다음과 같은 2가지 형태로 제공된다.
1️⃣ 모달 다이얼로그(Modal Dialog)
- 사용자에게 해당 창과 상호작용을 완료하기 전까지는 다른 창과의 상호작용을 허용하지 않는다.
- @exec_()@ 메서드를 호출하여 표시하며, 사용자가 다이얼로그를 닫기 전까지 다른 창과의 상호작용을 차단한다.
2️⃣ 모델리스(비모달) 다이얼로그(Modeless Dialog)
- 사용자가 다른 창과 동시에 상호작용을 할 수 있도록 허용한다.
- @show()@ 메서드를 호출하여 표시하며, 사용자가 다른 창과 상호작용할 수 있다.
사용 예시
모달 다이얼로그
import sys
from PyQt6.QtWidgets import QApplication, QDialog, QVBoxLayout, QLabel, QDialogButtonBox
class MyDialog(QDialog):
def __init__(self, parent=None):
super(MyDialog, self).__init__(parent)
self.setWindowTitle("모달 다이얼로그 예제")
# 레이아웃 설정
layout = QVBoxLayout(self)
# 라벨 추가
label = QLabel("Hello World!", self)
layout.addWidget(label)
# 버튼 추가 (확인, 취소)
buttons = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel, self)
layout.addWidget(buttons)
buttons.accepted.connect(self.accept)
buttons.rejected.connect(self.reject)
if __name__ == '__main__':
app = QApplication(sys.argv)
dialog = MyDialog()
# 모달 다이얼로그 방식
if dialog.exec_() == QDialog.Accepted:
print("확인을 눌렀습니다.")
else:
print("취소를 눌렀습니다.")
모델리스 다이얼로그
import sys
from PyQt6.QtWidgets import QApplication, QMainWindow, QPushButton, QDialog, QVBoxLayout, QLabel
class ModelessDialog(QDialog):
def __init__(self, parent=None):
super(ModelessDialog, self).__init__(parent)
self.setWindowTitle("모델리스(비모달) 다이얼로그 예제")
layout = QVBoxLayout(self)
layout.addWidget(QLabel("Hello World!"))
class MainWindow(QMainWindow):
def __init__(self):
super(MainWindow, self).__init__()
self.setWindowTitle("메인창")
self.setGeometry(100, 100, 300, 200)
# 모델리스 다이얼로그를 열기 위한 버튼
self.button = QPushButton("모델리스 다이얼로그 열기", self)
self.button.clicked.connect(self.open_dialog)
self.setCentralWidget(self.button)
# 다이얼로그 인스턴스를 저장할 변수
self.dialog = None
def open_dialog(self):
# 다이얼로그가 이미 열려있지 않으면 새로 생성
if self.dialog is None:
self.dialog = ModelessDialog(self)
# 모델리스 방식으로 다이얼로그 표시
self.dialog.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
참고 사이트
QDialog — Qt for Python
QDialog The QDialog class is the base class of dialog windows. More… Inherited by: QAbstractPrintDialog, QPageSetupDialog, QPrintDialog, QPrintPreviewDialog, QColorDialog, QErrorMessage, QFileDialog, QFontDialog, QInputDialog, QMessageBox, QProgressDialo
doc.qt.io
728x90
728x90
'Framework > PyQt' 카테고리의 다른 글
| [PyQt] 테이블(QTableWidget) 내용 지우는 방법 (0) | 2025.01.16 |
|---|---|
| [PyQt] self.function(param)과 function(self, param)의 차이점 (0) | 2024.10.12 |
| [PyQt] QTableWidget 안의 항목 검색 및 복원 기능 구현 방법 (0) | 2024.01.29 |
| [PyQt] QTableWidget과 SQLite3를 연동하여 구현한 CRUD 프로그램 (0) | 2023.11.27 |
| [PyQt] 플랫폼 독립적인(Platform Independent) 스타일 적용하는 방법 (Fusion) (0) | 2023.09.21 |
| [PyQt] 맥(Mac)에서 윈도우(Windows)와 비슷하게 메뉴 표시하는 방법 (0) | 2023.09.21 |
| [PyQt] QTableWidget에 1,000 단위로 쉼표(,)를 추가하고 숫자 정렬 기능 추가하기 (0) | 2023.07.20 |
| [PyQt] 간단한 CRUD(Create, Read, Update, Delete) 프로그램 (0) | 2023.07.18 |