PyQt - QMessageBox

QMessageBoxes un cuadro de diálogo modal de uso común para mostrar algún mensaje informativo y, opcionalmente, pedirle al usuario que responda haciendo clic en cualquiera de los botones estándar. Cada botón estándar tiene un título predefinido, una función y devuelve un número hexadecimal predefinido.

Los métodos y enumeraciones importantes asociados con la clase QMessageBox se proporcionan en la siguiente tabla:

No Señor. Métodos y descripción
1

setIcon()

Muestra el icono predefinido correspondiente a la gravedad del mensaje

Pregunta

Información

Advertencia

Crítico

2

setText()

Establece el texto del mensaje principal que se mostrará

3

setInformativeText()

Muestra información adicional

4

setDetailText()

El cuadro de diálogo muestra un botón Detalles. Este texto aparece al hacer clic en él.

5

setTitle()

Muestra el título personalizado del diálogo

6

setStandardButtons()

Lista de botones estándar que se mostrarán. Cada botón está asociado con

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.Reintentar 0x00080000

QMessageBox.Ignore 0x00100000

7

setDefaultButton()

Establece el botón como predeterminado. Emite la señal de clic si se presiona Enter

8

setEscapeButton()

Configura el botón para que se trate como si se hiciera clic si se presiona la tecla Escape

Ejemplo

En el siguiente ejemplo, haga clic en la señal del botón en la ventana de nivel superior, la función conectada muestra el cuadro de diálogo del cuadro de mensaje.

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:")

La función setStandardButton () muestra los botones deseados.

msg.setStandardButtons(QMessageBox.Ok | QMessageBox.Cancel)

La señal buttonClicked () está conectada a una función de ranura, que identifica el título de la fuente de la señal.

msg.buttonClicked.connect(msgbtn)

El código completo para el ejemplo es el siguiente:

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()

El código anterior produce la siguiente salida: