PyQt - QMessageBox
QMessageBoxé uma caixa de diálogo modal comumente usada para exibir alguma mensagem informativa e, opcionalmente, pedir ao usuário para responder clicando em qualquer um dos botões padrão nela. Cada botão padrão possui uma legenda predefinida, uma função e retorna um número hexadecimal predefinido.
Métodos e enumerações importantes associados à classe QMessageBox são fornecidos na tabela a seguir -
Sr. Não. | Métodos e Descrição |
---|---|
1 |
setIcon() Exibe um ícone predefinido correspondente à gravidade da mensagem Questão Em formação Atenção Crítico |
2 |
setText() Define o texto da mensagem principal a ser exibida |
3 |
setInformativeText() Exibe informações adicionais |
4 |
setDetailText() A caixa de diálogo mostra um botão Detalhes. Este texto aparece ao clicar nele |
5 |
setTitle() Mostra o título personalizado da janela |
6 |
setStandardButtons() Lista de botões padrão a serem exibidos. Cada botão está associado a QMessageBox.Ok 0x00000400 QMessageBox.Open 0x00002000 QMessageBox.Save 0x00000800 QMessageBox.Cancel 0x00400000 QMessageBox.Close 0x00200000 QMessageBox.Yes 0x00004000 QMessageBox.No 0x00010000 QMessageBox.Abort 0x00040000 QMessageBox.Retry 0x00080000 QMessageBox.Ignore 0x00100000 |
7 |
setDefaultButton() Define o botão como padrão. Emite o sinal clicado se Enter for pressionado |
8 |
setEscapeButton() Define o botão a ser tratado como clicado se a tecla Escape for pressionada |
Exemplo
No exemplo a seguir, clique no sinal do botão na janela de nível superior, a função conectada exibe a caixa de diálogo da caixa de mensagem.
msg = QMessageBox()
msg.setIcon(QMessageBox.Information)
msg.setText("This is a message box")
msg.setInformativeText("This is additional information")
msg.setWindowTitle("MessageBox demo")
msg.setDetailedText("The details are as follows:")
A função setStandardButton () exibe os botões desejados.
msg.setStandardButtons(QMessageBox.Ok | QMessageBox.Cancel)
O sinal buttonClicked () é conectado a uma função de slot, que identifica a legenda da fonte do sinal.
msg.buttonClicked.connect(msgbtn)
O código completo para o exemplo é o seguinte -
import sys
from PyQt4.QtGui import *
from PyQt4.QtCore import *
def window():
app = QApplication(sys.argv)
w = QWidget()
b = QPushButton(w)
b.setText("Show message!")
b.move(50,50)
b.clicked.connect(showdialog)
w.setWindowTitle("PyQt Dialog demo")
w.show()
sys.exit(app.exec_())
def showdialog():
msg = QMessageBox()
msg.setIcon(QMessageBox.Information)
msg.setText("This is a message box")
msg.setInformativeText("This is additional information")
msg.setWindowTitle("MessageBox demo")
msg.setDetailedText("The details are as follows:")
msg.setStandardButtons(QMessageBox.Ok | QMessageBox.Cancel)
msg.buttonClicked.connect(msgbtn)
retval = msg.exec_()
print "value of pressed message box button:", retval
def msgbtn(i):
print "Button pressed is:",i.text()
if __name__ == '__main__':
window()
O código acima produz a seguinte saída -