Suite

Lancement de l'interface utilisateur de l'outil de traitement à l'aide de PyQGIS


J'essaie de lancer l'interface utilisateur d'un algorithme de traitement à l'aide d'un script Python mais je ne trouve pas de moyen simple pour cela (à part un double-clic dessus dans la boîte à outils du processus bien sûr). Le plugin est un simulateur de réseau d'eau et je veux juste lancer son UI de pré-traitement sans utiliserprocess.runalg()car cela doit entrer des arguments et je n'en ai pas besoin.

Certains moyens seraient de déclencher des processus disponibles dans la boîte à outils de processus ou d'envoyer une commande au commandant depuis la console python. mais je n'ai aucune idée de comment et je cherche depuis 2 heures maintenant, aucun résultat.


Vous pouvez le faire à partir de la console QGIS Python de cette manière :

# Importez les classes Processing et CommanderWindow # à partir du framework Processing. from processing.core.Processing import Processing from processing.gui.CommanderWindow import CommanderWindow # Ensuite, récupérez l'algorithme qui vous intéresse (par exemple, Join Attributes): alg = Processing.getAlgorithm("qgis:joinattributestable") # Instanciez le commander fenêtre et ouvrez l'interface de l'algorithme cw = CommanderWindow(iface.mainWindow(), iface.mapCanvas()) si alg n'est pas None : cw.runAlgorithm(alg)

C'est ça! Vous obtenez l'interface utilisateur de l'algorithme ouverte.

Noter: Vous pouvez obtenir les noms des algorithmes disponibles en saisissant ces lignes dans la console QGIS Python :

traitement d'importation processing.alglist()

Testé dans QGIS 2.10.1, Processing framework v.2.9.1 et v.2.10.1


ÉDITER:

Si vous trouvez des erreurs lors de l'exécution de l'extrait de code ci-dessus, il est probable que vous utilisiez QGIS v2.16.0, v2.16.1 ou v2.16.2. Pour résoudre le problème, installez QGIS v2.16.3.


Pour ouvrir une interface graphique d'algorithme de traitement sur la série QGIS 3.x, vous devez procéder comme suit :

import processing processing.execAlgorithmDialog('native:buffer') # Peut prendre des paramètres pour préremplir les champs de l'interface graphique processing.execAlgorithmDialog('native:buffer', parameters= {'INPUT':iface.activeLayer(),'DISTANCE':10, 'SEGMENTS':5,'END_CAP_STYLE':0,'JOIN_STYLE':0,'MITER_LIMIT':2,'DISSOLVE':False,'OUTPUT':'TEMPORARY_OUTPUT'})

Vous pouvez obtenir la liste des identifiants des algorithmes et le nom associé avec

pour alg dans QgsApplication.processingRegistry().algorithms() : print(alg.id(), "->", alg.displayName())

Le code ci-dessus est un extrait du document officiel "Utilisation des algorithmes de traitement de la console"


Voir la vidéo: QGIS Python PyQGIS - Create a Custom Processing Script for QGIS in the Processing Toolbox (Octobre 2021).