#1 Tue 16 January 2024 10:52
- ppluvinet
- Participant assidu
- Lieu: VALENCE
- Date d'inscription: 6 Aug 2007
- Messages: 617
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: 347
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: 266
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: VALENCE
- Date d'inscription: 6 Aug 2007
- Messages: 617
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
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