viernes, 11 de enero de 2019

Cómo obtener la señal cuando cambia el renderizado con PyQGIS 3

Aunque el renderizado se asocia generalmente a una capa vectorial o ráster, como el método 'renderComplete' pertenece a la clase QgsMapCanvas sólo basta con cambiar las dimensiones de la Map View de QGIS, sin tener cargada ninguna capa, para que se produzca una conexión al slot mediante el método previamente señalado. Ésto puede ser ejemplificado con el código que se presenta a continuación:

1
2
3
4
5
6
7
def onRenderComplete():
    layers = iface.mapCanvas().layers()
    print(layers)
    print("Render has changed")

canvas = iface.mapCanvas()
canvas.renderComplete.connect(onRenderComplete)

Si el código anterior es abierto en la Python Console de QGIS, sólo basta con cargar una capa a la Map View para que se imprima en ésta las capas seleccionadas y la advertencia 'Render has changed'; tal como se evidencia en la imagen siguiente:


Lo mismo ocurriría si cambiamos el renderer de la capa vectorial o de una capa ráster o si modificamos las dimensiones de la Map View de QGIS. Esto se puede observar en la imagen a continuación al cargar una capa ráster adicional en QGIS:




No hay comentarios: