PyQt QMessageBox

Summary: in this tutorial, you’ll learn how to use the PyQt QMessageBox class to create a modal dialog that alerts the user or asks the user to make a decision.

Introduction to PyQt QMessageBox class

The QMessageBox class allows you to create a modal dialog that alerts the user with important information or asks the user a question and receives an answer.

The QMessageBox provides some useful static methods for displaying a message box:

  • information() – show an information message.
  • question() – ask the user a question and receives an answer.
  • warning() – show a warning message.
  • critical() – display critical information.

PyQt QMessageBox examples

The following program shows a window with four buttons, clicking a button will display a corresponding message:

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)

How it works.

The question() method displays a message box with a question that asks the user to select either a Yes or No button:

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

To get which button the user clicked, you compare the return value of the question() method with the Yes and No members of the QMessageBox.StandardButton enum:

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)

The information() method displays a message box with information. It accepts the parent widget, the title of the message box, and the message.

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

The warning() method displays a warning message. Its appearance is like the information except for the warning icon:

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

Output:

The critical() method displays a critical message on the message box. The stop icon makes the message critical.

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

Summary

  • Use QMessageBox class to create a modal dialog that displays a message box or asks the user a question and receives an answer.
Did you find this tutorial helpful ?