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 |