Resumo : neste tutorial, você aprenderá como usar a QMessageBox
classe 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 QMessageBox
classe 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 QMessageBox
fornece 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 Yes
e No
da QMessageBox.StandardButton
enumeraçã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
QMessageBox
a 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.