QMessageBox Class는 사용자에게 정보를 제공하거나 어떤 동작에 확인이 필요한 경우 사용되는 대화창입니다. (QMessageBox 공식 문서) 참고
메시지 박스는 사용자에게 상황을 설명하는 기본 텍스트를 표시합니다. 그 다음 정보를 전달하거나 사용자의 의사를 묻는 텍스트를 표시할 수 있습니다. 마지막으로 더욱 자세히 상황을 설명하기 위한 세부적인 텍스트를 표시할 수 있습니다.
이러한 각각의 텍스트를 표시하기 위해 setText(), setInformativeText(), setDetailedText() 메서드를 사용할 수 있습니다.
41-1 예제: ex40
| import sys from PyQt5.QtWidgets import (QApplication, QWidget, QMessageBox) class MyApp(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): self.setWindowTitle('QMessageBox') self.setGeometry(300, 300, 300, 200) self.show() def closeEvent(self, event): reply = QMessageBox.question(self, '메시지', '정말 끝내시겠습니까?', QMessageBox.Yes | QMessageBox.No, QMessageBox.No) if reply == QMessageBox.Yes: event.accept() else: event.ignore() if __name__ == '__main__': app = QApplication(sys.argv) ex = MyApp() sys.exit(app.exec_()) |
41-2 설명
창을 닫을 때 한 번더 확인하기 위한 메시지 박스를 나탄냅니다.
QWidget을 종료할 때, QCloseEvent가 생성되어 위젯에 전달됩니다.
위젯의 동작을 수정하기 위해 closeEvent() 이벤트 핸들러를 수정해야 합니다.
| def closeEvent(self, event): reply = QMessageBox.question(self, '메시지', '정말 끝내시겠습니까?', QMessageBox.Yes | QMessageBox.No, QMessageBox.No) |
두 번째 매개변수는 타이틀바에 나타날 문자열 'Message', 세 번째 매개변수는 대화창에 나타날 문자열 'Are you sure to quit?' 을 입력합니다. 네 번째는 대화창에 보여질 버튼의 종류를 입력하고, 마지막으로 기본 선택 버튼을 설정합니다.
QMessageBox.No로 설정할 경우, 메세지 박스가 나타났을 때 'No' 버튼이 선택되어 있습니다.
반환값은 reply 변수에 저장됩니다.
| if reply == QMessageBox.Yes: event.accept() else: event.ignore() |
'Yes' 버튼을 클릭했을 경우, 이벤트를 받아들이고 위젯을 종료합니다.
'No' 버튼을 클릭하면, 이벤트를 무시하고 위젯을 종료하지 않습니다.
41-3 결과

'프로그래밍 > PyQt5 GUI' 카테고리의 다른 글
| 43. 이벤트 핸들러(슬롯) 만들기 (0) | 2021.07.28 |
|---|---|
| 42. 시그널과 슬롯 연결 (0) | 2021.07.28 |
| 40. QFileDialog (0) | 2021.07.28 |
| 39. QFontDialog (0) | 2021.07.28 |
| 38. QColorDialog (0) | 2021.07.27 |