Comment afficher la console Python au démarrage du programme QGIS


10

Je me demande s'il existe un moyen d'ouvrir la console Python directement au lancement du programme. Il existe une possibilité de définir un raccourci pour la console Python, mais je ne trouve pas une telle option pour le lancement du programme QGIS.


Il existe un moyen d'écrire un fichier qui est exécuté au démarrage de QGIS, ce qui peut être utile pour des paramètres personnalisés comme ceux-ci. La question est de savoir si vous pouvez ouvrir la console par programmation ou non. Savez-vous si vous pouvez faire ça?
BritishSteel

J'ai cherché dans l'API, mais la seule classe liée à python est QgsPythonRunner, qui n'est pas la console.
Martin

Réponses:


12

Utilisation de macros

Vous pouvez démarrer la console QGIS Python lors de l'ouverture d'un projet en écrivant quelques lignes dans QGIS->Project->Project Properties:

def openProject():
    import qgis     
    qgis.utils.iface.actionShowPythonDialog().trigger()

Assurez-vous d'activer les macros sur votre projet, de cette façon: Settings->Options->General->Enable macros: Always


Utilisation de startup.py

Comme vous voulez que la console QGIS Python s'ouvre au lancement de QGIS , vous pouvez créer (si elle n'existe pas déjà) un startup.pyfichier dans %APPDATA%\QGIS\QGIS3\et écrire:

import qgis     
qgis.utils.iface.actionShowPythonDialog().trigger()

EDIT (pour répondre à une question complémentaire de @Miro)

Comme l'a souligné Miro, si QGIS Python Console est ouvert, qgis.utils.iface.actionShowPythonDialog().trigger()il le fermera, donc, si nous écrivons un plugin QGIS, il pourrait être judicieux de savoir si la console Python est ouverte (visible) ou non.

Vous pouvez savoir si la console Python n'est pas visible (puis l'ouvrir) en exécutant ce code:

from qgis.PyQt.QtWidgets import QDockWidget
pythonConsole = iface.mainWindow().findChild(QDockWidget, 'PythonConsole')
if not pythonConsole or not pythonConsole.isVisible():
    from qgis.utils import iface
    iface.actionShowPythonDialog().trigger()

Existe-t-il un moyen de vérifier si la console est déjà ouverte? Parce que si c'est le trigger () va le fermer.
Miro

@Miro, il y a un moyen! J'ai édité ma réponse avec des instructions.
Germán Carrillo

1
En 2.18, la macro de projet fonctionne mais le script de démarrage ne parvient pas à ouvrir la console.
underdark
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.