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.
Grabar mensajes en este panel es útil cuando queremos hacer seguimientos de procesos.
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)
Si quieres aprender a programar con Python en el nuevo QGIS 3.0, inscríbete ya en nuestro curso online de PyQGIS.
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.
Hola Juan,
En nuestro curso online de PyQGIS no es necesario saber programar. Se parte desde cero, con explicaciones claras y sencillas. En el curso se dan las nociones y conceptos necesarios para aplicar el lenguaje de Python en nuestros procesos. Si te fijas en el temario del curso las tres primeras unidades son introductorias y las otras tres se profundiza un poco más, pero no es un curso complicado. Puedes leer algunas opiniones de nuestos alumnos: http://mappinggis.com/opiniones/#Opiniones_de_alumnos_del_curso_online_de_PyQGIS_Python_para_QGIS Saludos Juan!