본문 바로가기

프로그래밍/PyQt5 GUI

41. QMessageBox

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