Cómo mostrar avisos en QGIS 3 con PyQGIS

Desde PyQGIS existen tres métodos de generar avisos  en QGIS y mensajes para el usuario:

  • QMessageBox
  • QgsMessageLog
  • QgsMessageBar

Ventanas emergentes – QMessageBox

QMessageBox: es una Clase de Qt que lanza un mensaje en una ventana emergente. El usuario tendrá que aceptar el mensaje para que la ventana se cierre:

Los mensajes pueden ser de tipo:

  • QMessageBox.information()
  • QMessageBox.warning()
  • QMessageBox.critical()

La diferencia está en el icono que se muestra.

Como argumentos requiere: parent, titulo, mensaje.

El  argumento parent hace referencia a la ventana de la que colgará el mensaje emergente, lo habitual es especificar None o iface.mainWindow().

Ejemplo:

from PyQt5.QtWidgets import QMessageBox

from qgis.core import QgsProject

layer=qgis.utils.iface.mapCanvas().currentLayer()

QMessageBox.information(iface.mainWindow(), "Capa Activa", 'La capa activa es ' +layer.name())

Mensajes de registro – QgsMessageLog

QgsMessageLog: es una Clase de QGIS que escribe un mensaje en la ventana de mensajes de registro (Log message window) de QGIS.

Para visualizar esta ventana se debe activar la pestaña “Mensajes de registro” dentro del Menú Ver\Paneles.

mensajes de registro

Grabar mensajes en este panel es útil cuando queremos hacer seguimientos de procesos.

Avisos en QGIS con QgsMessageLog. Panel de mensajes de registro.

Como argumentos requiere: mensaje, titulo pestaña, nivel de mensaje.

El nivel del mensaje puede ser INFO, WARNING o CRITICAL.

Ejemplo:

from PyQt5.QtWidgets import QMessageBox

from qgis.core import QgsProject

layer=qgis.utils.iface.mapCanvas().currentLayer()

QgsMessageLog.logMessage('La capa activa es ' +layer.name(),'Capa Activa', Qgis.Warning)

Barra de mensajes – QgsMessageBar

QgsMessageBar: es una Clase de QGIS que muestra una barra de mensaje emergente en la parte superior del map canvas. Esta es una opción elegante para mostrar mensajes sin necesidad de interrumpir el proceso ni de la intervención del usuario.

Pueden ser de tipo: Info, Warning y Critical. La diferencia está en el icono y el color de la barra: azul, naranja y rojo respectivamente.

Como argumentos requiere: título, mensaje, tipo de mensaje, tiempo emergente.

Ejemplo:

from PyQt5.QtWidgets import QMessageBox

from qgis.core import QgsProject

from qgis.gui import QgsMessageBar

layer=qgis.utils.iface.mapCanvas().currentLayer()

iface.messageBar().pushMessage("Capa Activa",'La capa activa es ' +layer.name(), Qgis.Info,5)
Ejemplo de mensaje con la clase QgsMessageBar.INFO

Si quieres aprender a programar con Python en el nuevo QGIS 3.0, inscríbete ya en nuestro curso online de PyQGIS.

2 comentarios en «Cómo mostrar avisos en QGIS 3 con PyQGIS»

  1. Estoy interesado en realizar un curso online de PyQgis, pero no tengo base de programación. Seria muy complicado inicior un curso de este tipo, o se hace empezando desde 0. Muchas gracias.

Los comentarios están cerrados.