1 . Utiliser le générateur de plugins pour créer un nouveau plugin
Les fichiers créés sont illustrés dans l'image suivante
2 . Convertissez le fichier de ressources ( resources.qrc ) en fichier Python ( resources.py ) à l'aide du shell OSGeo4W
pyrcc4 -o resources_rc.py resources.qrc
Après cela, si vous regardez dans le dossier du plugin , vous remarquerez un nouveau fichier .py , le fichier resources.py qui vient d'être créé. Le plugin peut maintenant être installé et ouvert via le menu principal de QGIS> Gérer et installer les plugins.
3 . COMMENT CRÉER LA BARRE D'OUTILS ET LES OUTILS (boutons) ET AJOUTER LES OUTILS SUR LA BARRE D'OUTILS
Ouvrez avec un éditeur le fichier my_toolbar.py et dans la section du initGui (self) écrivez:
def initGui(self):
self.toolBar = self.iface.addToolBar("MY TOOLBAR tools")
self.toolBar.setObjectName("MY TOOLBAR tools")
self.act1 = QAction(QIcon(":/plugins/Myplugintoolbar/icon.png"), QCoreApplication.translate("IMPRESStoolbar", "Tool1"), self.iface.mainWindow())
self.act2 = QAction(QIcon(":/plugins/Myplugintoolbar/icon.png"), QCoreApplication.translate("IMPRESStoolbar", "Tool2"), self.iface.mainWindow())
self.act3 = QAction(QIcon(":/plugins/Myplugintoolbar/icon.png"), QCoreApplication.translate("IMPRESStoolbar", "Tool3"), self.iface.mainWindow())
De cette façon, trois boutons / outils ont été créés.
Pour que les boutons apparaissent dans la barre d'outils, continuez à écrire ce qui suit:
self.toolBar.addAction(self.act1)
self.toolBar.addAction(self.act2)
self.toolBar.addAction(self.act3)
Pour que les boutons cliquent pour ouvrir une interface graphique, continuez à écrire ce qui suit:
QObject.connect(self.act1, SIGNAL("triggered()"), self.runtool1)
QObject.connect(self.act2, SIGNAL("triggered()"), self.runtool2)
QObject.connect(self.act3, SIGNAL("triggered()"), self.runtool3)
Les méthodes runtool1 , runtool2 et runtool3 sont définies ultérieurement comme suit afin d'ouvrir une interface graphique différente pour chaque bouton
def runtool1(self):
self.dlgtool1.show()
def runtool2(self):
self.dlgtool2.show()
def runtool3(self):
self.dlgtool3.show()
De cette façon, lorsque le bouton tool1 est cliqué, le gui dlgtool1 s'ouvrira, lorsque le bouton tool2 sera cliqué, le dlgtool2 s'ouvrira et lorsque le bouton tool3 sera cliqué, le dlgtool3 gui s'ouvrira.
dlgtool1 , dlgtool2 et dlgtool3 doivent être des variables pointant vers les fichiers ui représentant les boîtes de dialogue .
Les dialogues doivent donc être:
créé ,
importé dans le fichier py principal ( my_toolbar.py ) et
assigné aux variables ( dlgtool1 , dlgtool2 et dlgtool3 ) afin d'en obtenir une instance .
Pour créer les dialogues :
- Copiez les fichiers my_toolbar_dialog.py et my_toolbar_dialog_base.ui
et collez-les dans un autre dossier afin de pouvoir les renommer. Faites cela autant de fois que nécessaire, pour cet exemple trois fois.
Copiez ensuite ces nouveaux fichiers et collez-les dans le dossier Myplugintoolbar
Ouvrez Form_dlgtool1_dialog.py avec un éditeur afin d'appliquer les modifications suivantes:
De :
import os
from PyQt4 import QtGui, uic
FORM_CLASS, _ = uic.loadUiType(os.path.join(
os.path.dirname(__file__), 'my_toolbar_dialog_base.ui'))
class MyplugintoolbarDialog(QtGui.QDialog, FORM_CLASS):
def __init__(self, parent=None):
super(MyplugintoolbarDialog, self).__init__(parent)
self.setupUi(self)
Changer pour :
import os
from PyQt4 import QtGui, uic
FORM_CLASS, _ = uic.loadUiType(os.path.join(
os.path.dirname(__file__), 'Form_dlgtool1.ui'))
class Formdlgtool1Dialog(QtGui.QDialog, FORM_CLASS):
def __init__(self, parent=None):
super(Formdlgtool1Dialog, self).__init__(parent)
self.setupUi(self)
Suivez la même procédure pour les deux autres fichiers ( Form_dlgtool2_dialog.py et Form_dlgtool3_dialog.py )
Ensuite, pour importer les boîtes de dialogue dans le fichier principal, ouvrez le fichier my_toolbar.py avec l'éditeur et importez ce qui suit
from Form_dlgtool1_dialog import Formdlgtool1Dialog
from Form_dlgtool2_dialog import Formdlgtool2Dialog
from Form_dlgtool3_dialog import Formdlgtool3Dialog
Enfin, afin d'en obtenir une instance , écrivez ce qui suit dans la section def __init __ (self, iface) :
self.dlgtool1 = Formdlgtool1Dialog()
self.dlgtool2 = Formdlgtool2Dialog()
self.dlgtool3 = Formdlgtool3Dialog()
Maintenant, vous pouvez ouvrir les fichiers ui dans QtDesigner et les personnaliser. Rechargez ensuite la barre d'outils du plugin dans QGIS pour obtenir le résultat suivant