프로그래밍/파이썬

파이썬 Python QT 메시지 박스 - PyQt QMessageBox

에이티에스 2023. 6. 22. 17:16
728x90

PyQt QMessageBox 클래스 소개

QMessageBox 클래스를 사용하면 사용자에게 중요한 정보를 알리거나 사용자에게 질문을 하고 답변을 받는 모달 대화 상자를 만들 수 있습니다.

QMessageBox는 메시지 상자를 표시하기 위한 몇 가지 유용한 정적 메서드를 제공합니다.

  • information() – 정보 메시지를 표시합니다.
  • question() – 사용자에게 질문하고 답변을 받습니다.
  • warning() – 경고 메시지를 표시합니다.
  • critical() – 중요한 정보를 표시합니다.

 

PyQt QMessageBox 예제

다음 프로그램은 4개의 버튼이 있는 창을 보여주며 버튼을 클릭하면 해당 메시지가 표시됩니다.

import sys
from PyQt6.QtWidgets import QApplication,  QMessageBox, QWidget, QHBoxLayout,  QPushButton


class MainWindow(QWidget):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

        self.setWindowTitle('PyQt QMessageBox')
        self.setGeometry(100, 100, 300, 100)

        layout = QHBoxLayout()
        self.setLayout(layout)

        btn_question = QPushButton('Question')
        btn_question.clicked.connect(self.question)

        btn_info = QPushButton('Information')
        btn_info.clicked.connect(self.info)

        btn_warning = QPushButton('Warning')
        btn_warning.clicked.connect(self.warning)

        btn_critical = QPushButton('Critical')
        btn_critical.clicked.connect(self.critical)

        layout.addWidget(btn_question)
        layout.addWidget(btn_info)
        layout.addWidget(btn_warning)
        layout.addWidget(btn_critical)

        self.show()

    def info(self):
        QMessageBox.information(
            self,
            'Information',
            'This is important information.'
        )

    def warning(self):
        QMessageBox.warning(
            self,
            'Warning',
            'This is a warning message.'
        )

    def critical(self):
        QMessageBox.critical(
            self,
            'Critical',
            'This is a critical message.'
        )

    def question(self):
        answer = QMessageBox.question(
            self,
            'Confirmation',
            'Do you want to quit?',
            QMessageBox.StandardButton.Yes |
            QMessageBox.StandardButton.No
        )
        if answer == QMessageBox.StandardButton.Yes:
            QMessageBox.information(
                self,
                'Information',
                'You selected Yes. The program will be terminated.',
                QMessageBox.StandardButton.Ok
            )
            self.close()
        else:
            QMessageBox.information(
                self,
                'Information',
                'You selected No.',
                QMessageBox.StandardButton.Ok
            )


if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = MainWindow()
    sys.exit(app.exec())Code language: Python (python)

작동 방식.

question() 메서드는 사용자에게 예 또는 아니요 단추를 선택하도록 요청하는 질문이 포함된 메시지 상자를 표시합니다.

answer = QMessageBox.question(
    self,
    'Confirmation',
    'Do you want to quit?',
    QMessageBox.StandardButton.Yes |
    QMessageBox.StandardButton.No
)Code language: Python (python)

 

 

사용자가 클릭한 단추를 가져오려면 question()메서드의 반환 값을 QMessageBox.StandardButton 열거형의 Yes, No 멤버와 비교합니다.

if answer == QMessageBox.StandardButton.Yes:
    QMessageBox.information(
        self,
        'Information',
        'You selected Yes. The program will be terminated.',
        QMessageBox.StandardButton.Ok
    )
    self.close()
else:
    QMessageBox.information(
        self,
        'Information',
        'You selected No.',
        QMessageBox.StandardButton.Ok
    )Code language: Python (python)

information()  메서드는 정보가 포함된 메시지 상자를 표시합니다. 부모 위젯, 메시지 상자의 제목 및 메시지를 허용합니다.

 QMessageBox.information(
    self,
    'Information',
    'This is important information.'
)Code language: Python (python)

PyQt-QMessageBox-정보-메시지

warning() 메서드는 경고 메시지를 표시합니다. 그 모양은 경고 아이콘을 제외한 정보와 같습니다.

QMessageBox.warning(
    self,
    'Warning',
    'This is a warning message.'
)Code language: Python (python)

출력:

critical() 메서드는 메시지 상자에 중요한 메시지를 표시합니다. 중지 아이콘은 메시지를 중요하게 만듭니다.

QMessageBox.critical(
    self,
    'Critical',
    'This is a critical message.'
)Code language: Python (python)

요약

  • QMessageBox 클래스를 사용하여 메시지 상자를 표시하거나 사용자에게 질문을 하고 대답을 받는 모달 대화 상자를 만듭니다.
728x90
반응형
그리드형

'프로그래밍 > 파이썬' 카테고리의 다른 글

파이썬 Python for else 문  (0) 2023.06.23
파이썬 Python For else  (0) 2023.06.22
파이썬 Python QT PyQt QVBoxLayout  (0) 2023.06.22
파이썬 Python QT PyQt QRadioButton  (0) 2023.06.22
파이썬 Python QT PyQt QGridLayout  (0) 2023.06.22