PyQt QMessageBox

Resumo : neste tutorial, você aprenderá como usar a QMessageBoxclasse PyQt para criar uma caixa de diálogo modal que alerta o usuário ou solicita que ele tome uma decisão.

Introdução à classe PyQt QMessageBox

A QMessageBoxclasse permite criar um diálogo modal que alerta o usuário com informações importantes ou faz uma pergunta ao usuário e recebe uma resposta.

O QMessageBoxfornece alguns métodos estáticos úteis para exibir uma caixa de mensagem:

  • information()– mostrar uma mensagem informativa.
  • question()– faça uma pergunta ao usuário e receba uma resposta.
  • warning()– mostrar uma mensagem de aviso.
  • critical()– exibir informações críticas.

Exemplos de PyQt QMessageBox

O programa a seguir mostra uma janela com quatro botões, clicar em um botão exibirá uma mensagem correspondente:

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())Linguagem de código:  Python  ( python )

Como funciona.

O question()método exibe uma caixa de mensagem com uma pergunta que pede ao usuário para selecionar um botão Sim ou Não:

answer = QMessageBox.question(
    self,
    'Confirmation',
    'Do you want to quit?',
    QMessageBox.StandardButton.Yes |
    QMessageBox.StandardButton.No
)Linguagem de código:  Python  ( python )

Para saber em qual botão o usuário clicou, compare o valor de retorno do question()método com os membros Yese Noda QMessageBox.StandardButtonenumeração:

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
    )Linguagem de código:  Python  ( python )

O information()método exibe uma caixa de mensagem com informações. Aceita o widget pai, o título da caixa de mensagem e a mensagem.

 QMessageBox.information(
    self,
    'Information',
    'This is important information.'
)Linguagem de código:  Python  ( python )

O warning()método exibe uma mensagem de aviso. Sua aparência é semelhante à informação, exceto pelo ícone de aviso:

QMessageBox.warning(
    self,
    'Warning',
    'This is a warning message.'
)Linguagem de código:  Python  ( python )

Saída:

O critical()método exibe uma mensagem crítica na caixa de mensagem. O ícone de parada torna a mensagem crítica.

QMessageBox.critical(
    self,
    'Critical',
    'This is a critical message.'
)Linguagem de código:  Python  ( python )

Resumo

  • Use QMessageBoxa classe para criar uma caixa de diálogo modal que exibe uma caixa de mensagem ou faz uma pergunta ao usuário e recebe uma resposta.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *