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 Fri 10 June 2016 10:27

youyou
Participant occasionnel
Date d'inscription: 25 Apr 2016
Messages: 12

QGIS: Pyqgis Lancer un plugin(Extension) dynamiquement dans un autre

Bonjour à tous ,

Je suis entrain d'implémenter une extension qgis 2.14.0 Essen, et je voudrais savoir si je peux lancer dans mon plugin que j'implémente un autre plugin déja téléchargé et installé sur Qgis . Si quelqu'un connait les fonctions qu'il faut utiliser pour lancer des plugins en code python je suis preneur,

Je vous remercie et bonne journée, Youyou

Hors ligne

 

#2 Fri 10 June 2016 16:58

gvellut
Participant actif
Lieu: Annecy
Date d'inscription: 13 Apr 2006
Messages: 112
Site web

Re: QGIS: Pyqgis Lancer un plugin(Extension) dynamiquement dans un autre

Oui. Il n'y a pas de séparations des plugins. Tu peux charger un autre plugin simplement en important son répertoire. Par exemple, si dans ~/.qgis2/python/plugins, tu as un répertoire "Plugin1" tu peux l'importer dans un autre plugin avec :

import Plugin1

Hors ligne

 

#3 Fri 10 June 2016 18:00

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

Re: QGIS: Pyqgis Lancer un plugin(Extension) dynamiquement dans un autre

Salut,

La réponse de gvellut est la plus pertinente dans 90% des cas, si tu cherches à réutiliser des fonctions provenant de l'autre plugin pour les intégrer au tien.
Si tu as seulement besoin de lancer le plugin depuis le tien, tu peux aussi accéder au plugin déjà instancié avec

Code:

iface.utils.plugins['nom_plugin']

Par exemple, si tu as l'extension Table Manager, tu peux sélectionner une couche puis lancer

Code:

qgis.utils.plugins['tablemanager'].run()

Thomas

Hors ligne

 

#4 Mon 13 June 2016 09:38

youyou
Participant occasionnel
Date d'inscription: 25 Apr 2016
Messages: 12

Re: QGIS: Pyqgis Lancer un plugin(Extension) dynamiquement dans un autre

Bonjour,
Merci Thomas pour ton aide.
Comme je suis nouveau sur pyqgis, j'ai encore un peu de mal à retrouver les bonnes fonctions.
Ce que je recherche en ce moment c'est une sorte de doc qui explique un peu comment par exemple remplir les champs du plugins lors du lancement avec qgis.utils.plugins['tablemanager'].run(). Je m'explique : A partir du code de mon plugin1, je veux lancer un autre plugin2, remplir ces paramètres et lancer les traitement à partir de code python de mon plugin1.

Je vous remercie tous ,
Bonne journée
Youyou,

Hors ligne

 

#5 Mon 13 June 2016 13:59

gvellut
Participant actif
Lieu: Annecy
Date d'inscription: 13 Apr 2006
Messages: 112
Site web

Re: QGIS: Pyqgis Lancer un plugin(Extension) dynamiquement dans un autre

Il faut que tu ailles voir le code source du plugin car il n'y a rien de standard là-dessus : chaque plugin va implémenter ça différemment.

Par exemple, dans le tablemanager, le code (cf https://github.com/borysiasty/tablemana … plugin.py) de la méthode run est :

Code:

def run(self):
  # create and show a configuration dialog or something similar
  layer = self.iface.activeLayer()
  if layer == None or layer.type() != layer.VectorLayer:
    QMessageBox.warning(self.iface.mainWindow(), QCoreApplication.translate('TableManager','Table manager'), QCoreApplication.translate('TableManager','Please select a vector layer'))
  elif layer.isEditable():
    QMessageBox.warning(self.iface.mainWindow(), QCoreApplication.translate('TableManager','Table manager'), QCoreApplication.translate('TableManager','The selected layer is currently in editing mode.\nPlease exit this mode before managing the table.'))
  else:
    dialoga = tableManager_gui.TableManager(self.iface)
    dialoga.exec_()

Donc si tu veux lancer la méthode run et ouvrir le dialogue du plugin pour une couche, tu vas devoir changer la couche active (iface.activeLayer) avant de lancer run().

Ou bien tu peux importer la classe tableManager_gui.TableManager et créer le dialogue directement (sans passer par une instance du plugin). Ou bien tu peux aussi simplement recopier la partie du code du plugin qui t'intéresse pour l'intégrer dans ton propre plugin (ce qui est parfois le plus simple...).

Hors ligne

 

#6 Wed 22 June 2016 15:29

youyou
Participant occasionnel
Date d'inscription: 25 Apr 2016
Messages: 12

Re: QGIS: Pyqgis Lancer un plugin(Extension) dynamiquement dans un autre

Bonjour a tous,

merci de votre car j'ai réussi à lancer des plugins à partir de mon plugins.

Est-ce que quelq'un a essayé de remplir sa boite de dialogue automatiquement , C à d depuis pyqgis , lancer un plugins avec des paramètres fixés

Si vous avez des pistes je serai heureux de les exploiter.

Je vous remercie ,
cordialement,
Youyou

Hors ligne

 

Pied de page des forums

Powered by FluxBB