5 votos

QgsProcessingException en el script de procesamiento QGIS3

Estoy tratando de usar QgsProcessingException dentro de un script de procesamiento si el parámetro de salida está vacío o corresponde a algo.

En el caso específico, la salida definida es QgsProcessingParameterFolderDestination y me gustaría mostrar una bonita advertencia amarilla en el cuadro de diálogo principal si la ruta elegida es igual a una ruta específica y no permitir que se ejecute el algoritmo.

En el método processAlgorithm intenté usar algo como:

# set the output folder
Results = self.parameterAsString(parameters, self.OUTPUT, context)
if Results.startswith('/tmp'):
    raise QgsProcessingException(self.tr('Por favor, elija otra ruta'))

funciona bien, lo que significa que el algoritmo no se inicia, pero el mensaje de advertencia se escribe en la ficha de registro y no en la ficha de diálogo principal.

La API de Python no es tan útil (https://qgis.org/pyqgis/3.0/core/Processing/QgsProcessingException.html) mientras que la API de C++ es un poco más detallada (https://qgis.org/api/classQgsProcessingException.html)

P.D.: utilizando QGIS master (3.1) en una máquina Debian Linux.

Para ser claro, a la izquierda está el manejo correcto de la excepción para un parámetro de ráster faltante, a la derecha lo que sucede con la excepción con el código anterior:

enter image description here

5voto

John Feminella Puntos 123

Necesitas anular QgsProccesingAlgorithm.checkParameterValues (https://qgis.org/pyqgis/3.0/core/Processing/QgsProcessingAlgorithm.html#qgis.core.QgsProcessingAlgorithm.checkParameterValues).

Devuelve False y tu mensaje de error si falla tu validación personalizada. No olvides llamar al método de la superclase, de lo contrario perderás todas las validaciones de parámetros habituales.

1 votos

Gracias por la respuesta y la pista. ¡Funciona! No sé si lo siguiente es el comportamiento esperado: No tengo la misma barra de mensajes de las comprobaciones predeterminadas, sino un cuadro de advertencia que aparece. Está perfectamente bien, solo quería informar de esto. Gracias de nuevo.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X