Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Printemps des cartes 2024

#1 Tue 16 January 2024 10:52

ppluvinet
Participant assidu
Lieu: LYON
Date d'inscription: 6 Aug 2007
Messages: 608

QGIS: Lancer un plugin au demarrage

Bonjour,
J'ai un projet QGIS et je souhaite m'assurer que la fenêtre du plugin ThemeSelector est ouverte si le plugin est installé et s'il ne l'est pas alors inviter l'utilisateur à télécharger l'extension via un message.

Dans ce projet, j'ai déjà des macros au démarrage pour fixer le zoom et le thème:

Code:

from qgis.utils import iface
from qgis.core import QgsProject

def openProject():
    iface.zoomFull()
    troot = QgsProject.instance().layerTreeRoot()
    tmodel = iface.layerTreeView().layerTreeModel()
    mtc = QgsProject.instance().mapThemeCollection()
    mtc.applyTheme(mtc.mapThemes()[0], troot,tmodel)

A savoir que la fenêtre du plugin ThemeSelector  ne s'ouvre pas directement au démarrage de QGIS, je suis à chaque fois obligé d'aller dans Extensions/ThemeSelector

Merci d'avance pour votre aide


Pascal PLUVINET

Hors ligne

 

#2 Tue 16 January 2024 12:19

pyjoubert
Participant assidu
Lieu: Lyon
Date d'inscription: 21 Mar 2006
Messages: 330

Re: QGIS: Lancer un plugin au demarrage

Et si dans votre fichier Startup.py vous mettiez

Code:

from qgis.PyQt.QtCore import QSettings

QSettings().setValue("PythonPlugins/ThemeSelector", True )

Cela activera votre plugin

Puis peut-être rajouter dans votre fonction un

Code:

qgis.utils.plugins["ThemeSelector"].run()

pour l'exécuter

Hors ligne

 

#3 Tue 16 January 2024 12:29

YoLecomte
Participant assidu
Lieu: Epinal
Date d'inscription: 7 Jul 2015
Messages: 239

Re: QGIS: Lancer un plugin au demarrage

Comme le dit pyjoubert, vous pouvez vérifier la disponiblité et accéder aux plugins installés grâce au dictionnaire disponible avec

Code:

qgis.utils.plugins['nom_du_plugin']

Cela vous permet de récupérer l'instance du plugin et d'interagir avec (appelé la fonction run() par exemple qui affiche le dockwidget pour le plugin theme selector)

Dans votre macro (ou un fichier startup.py) vous pouvez vérifier la présence de la clé 'themeselector' dans le dictionnaire qgis.utils.plugins. Si elle est absente, vous pouvez inviter l'utilisateur a l'activer ou à l'installer.

Hors ligne

 

#4 Thu 18 January 2024 12:40

ppluvinet
Participant assidu
Lieu: LYON
Date d'inscription: 6 Aug 2007
Messages: 608

Re: QGIS: Lancer un plugin au demarrage

Merci pour vos retour.
Par conséquent, dans ma macro de démarrage j'ai mis le code suivant :

Code:

from qgis.utils import iface
from qgis.utils import plugins
from qgis.core import QgsProject
from qgis.PyQt.QtCore import QSettings
from qgis.core import Qgis
def openProject():
    iface.zoomFull()
    troot = QgsProject.instance().layerTreeRoot()
    tmodel = iface.layerTreeView().layerTreeModel()
    mtc = QgsProject.instance().mapThemeCollection()
    mtc.applyTheme(mtc.mapThemes()[0], troot,tmodel)

    try:
        plugins["themeselector"].run()
    except KeyError as err:
        iface.messageBar().pushMessage("Error", "Télécharge et/ou active l'extension ThemeSelector", level=Qgis.Critical)

Encore merci.


Pascal PLUVINET

Hors ligne

 

#5 Fri 19 January 2024 00:05

ThomasG
Membre
Lieu: Nantes
Date d'inscription: 9 Sep 2005
Messages: 943
Site web

Re: QGIS: Lancer un plugin au demarrage

Bonjour,

Pour aller plus loin encore, tu peux installer le plugin pour ton utilisateur avec

Code:

    try:
        plugins["themeselector"].run()
    except KeyError as err:
        import pyplugin_installer # peut être déplacé en haut car les imports c'est généralement au début
        pyplugin_installer.instance().fetchAvailablePlugins(False)
        pyplugin_installer.instance().installPlugin('themeselector')
        iface.messageBar().pushMessage("Error", "Vous n'aviez pas installé et/ou téléchargé l'extension ThemeSelector dont dépend le plugin XXXXX, nous l'avons fait pour vous", level=Qgis.Info)

Hors ligne

 

Pied de page des forums

Powered by FluxBB