Important

La traduction est le fruit d’un effort communautaire auquel vous pouvez vous joindre. Cette page est actuellement traduite à 80.82%.

29.3. La Console Python de QGIS

Comme vous le verrez plus loin dans ce chapitre, QGIS a été conçu avec une architecture de plugin. Les plugins peuvent être écrits en Python, un langage très célèbre dans le monde géospatial.

QGIS apporte une API Python (voir le Livre de recettes PyQGIS pour obtenir un exemple de code) pour permettre à l’utilisateur d’interagir avec ses objets (couches, entités ou interface). QGIS possède également une console Python.

La console Python de QGIS est un shell interactif pour les exécutions de commandes Python. Il dispose également d’un éditeur de fichiers Python qui vous permet de modifier et d’enregistrer vos scripts Python. La console et l’éditeur sont basés sur le package PyQScintilla2. Pour ouvrir la console, allez dans Extensions ► Console Python (Ctrl+Alt+P).

29.3.1. La console interactive

The console is a Python interpreter that allows you to execute Python commands. Modules from QGIS (analysis, core, gui, server, processing, 3d) and Qt (QtCore, QtGui, QtNetwork, QtWidgets, QtXml) as well as Python’s math, os, re and sys modules are already imported and can be used directly.

La console interactive est composée d’une barre d’outils, d’une zone d’entrée et de sortie.

../../../_images/python_console.png

Fig. 29.15 La console Python

29.3.1.1. Barre d’outils

La barre d’outil propose les outils suivant:

29.3.1.2. Input area

The Console input area main features are:

  • Auto-complétion du code, coloration et rappels syntaxiques pour les APIs suivantes :

    • Python

    • PyQGIS

    • PyQt5

    • QScintilla2

    • osgeo-gdal-ogr

  • Ctrl+Alt+Space pour voir la liste d’auto-complétion si elle est activée dans Console Python ;

  • Exécutez des fragments de code depuis la zone de saisie en les tapant puis en appuyant sur Entrée ou Exécuter la Commande ;

  • Exécutez des extraits de code à partir de la zone de sortie en utilisant Entrez la sélection dans le menu contextuel ou en appuyant sur Ctrl+E ;

  • Parcourez l’historique des commandes dans la zone de saisie en utilisant les touches directionnelles Haut et Bas et exécutez la commande que vous voulez ;

  • Ctrl+Shift+Espace pour voir l’historique des commandes: un double clic sur une ligne exécutera la commande. La boîte de dialogue Historique des Commandes peut aussi être ouverte depuis le menu contextuel ou la zone de saisie ;

  • Sauvegarder et vider l’historique des commandes. L’historique sera sauvegardé dans le fichier console_history.txt du profil utilisateur en cours;

  • Type the following special commands:

    • ? to show a help of the Python Console

    • _api to open QGIS C++ API documentation or _api(object) for a specific object documentation (in QGIS C++ API or Qt API documentation)

    • _pyqgis to open QGIS Python API documentation or _pyqgis(object) for a specific object documentation (in QGIS Python API or Qt API documentation)

    • _cookbook to open PyQGIS Cookbook.

    • ! followed by a command to execute Shell commands from the Python Console. The console will start a subprocess, and forward its output to the Python Console Output. While the subprocess is running, the Python Console Input switches to STDIN mode and forwards entered character to the child process. This makes it possible to send confirmation when the child program asks for it. When the Console is in STDIN mode, pressing Ctrl+C kills the subprocess. It is also possible to affect the result of a command to a variable with the syntax var = !cmd

      >>> !echo QGIS Rocks!
      QGIS Rocks
      
      >>> !gdalinfo --version
      GDAL 3.6.2, released 2023/01/02
      
      >>> !pip install black
      # Install black python formatter using pip (if available)
      
      >>> sql_formats = !ogrinfo --formats | grep SQL
      >>> sql_formats
      ['SQLite -vector- (rw+v): SQLite / Spatialite', '  MSSQLSpatial -vector- (rw+): Microsoft SQL Server Spatial Database', '  PostgreSQL -vector- (rw+): PostgreSQL/PostGIS', '  MySQL -vector- (rw+): MySQL', '  PGDUMP -vector- (w+v): PostgreSQL SQL dump']
      

Astuce

Réutilisez des commandes déjà exécutées depuis la zone de sortie

Vous pouvez exécuter des fragments de code depuis la zone de sortie en les sélectionnant et en appuyant sur Ctrl+E. Peu importe que le texte sélectionné contienne les caractères d’attente de l’interpréteur (>>>,``…``).

29.3.2. L’éditeur de code

Utilisez showEditorConsole Afficher l’éditeur pour activer le widget de l’éditeur. Il permet de modifier et d’enregistrer des fichiers Python et offre des fonctionnalités avancées pour gérer votre code (commenter et décommenter le code, vérifier la syntaxe, partager le code via GitHub et bien plus encore). Les caractéristiques principales sont :

  • Auto-complétion du code, coloration et rappels syntaxiques pour les APIs suivantes :

    • Python

    • PyQGIS

    • PyQt5

    • QScintilla2

    • osgeo-gdal-ogr

  • Ctrl+Espace pour afficher la liste de saisie semi-automatique.

  • Partager votre code via GitHub.

  • : kbd:Ctrl+4 Vérification de la syntaxe.

  • Barre de recherche (ouvrez-la avec le raccourci Environnement de bureau par défaut, généralement Ctrl+F) :

    • Utilisez le raccourci par défaut de l’environnement de bureau pour trouver le suivant / précédent (Ctrl+G et Shift+Ctrl+G) ;

    • Rechercher automatiquement la première correspondance lors de la saisie dans la zone de recherche ;

    • Définissez la chaîne de recherche initiale sur sélection lors de l’ouverture de la recherche ;

    • Appuyer sur Esc ferme la barre de recherche.

  • Inspecteur d’objets: un navigateur de classes et de fonctions ;

  • Accédez à une définition d’objet avec un clic de souris (depuis l’inspecteur d’objets) ;

  • Exécutez des extraits de code avec la commande runConsole Exécuter la sélection dans le menu contextuel ;

  • Exécutez le script entier avec la commande start Exécuter le script (ceci crée un fichier compilé, avec l’extension .pyc).

Note

L’exécution partielle ou totale d’un script à partir de Éditeur de code affiche le résultat dans la zone de sortie de la console.

../../../_images/python_console_editor.png

Fig. 29.16 L’éditeur de console Python

Astuce

** Enregistrez les options **

Pour enregistrer l’état des widgets de la console, vous devez fermer la console Python à partir du bouton de fermeture. Cela vous permet d’enregistrer la géométrie à restaurer au prochain démarrage.