Je veux créer une barre d'outils avec 2 boutons, chaque bouton ouvrant un formulaire différent.
Les étapes que j'ai suivies sont:
Création d'un plugin à l'aide du générateur de plugins
Création d'une barre d'outils avec 2 boutons en effectuant les modifications nécessaires dans le fichier d'implémentation.
Jusqu'à présent, tout fonctionne bien, donc lorsque vous cliquez sur le premier bouton, le formulaire correspondant s'ouvre correctement. Ce formulaire est celui créé par le générateur de plugin.
Ensuite, je veux avoir un deuxième formulaire qui s'ouvrira lorsque le deuxième bouton sera cliqué. Donc:
Création d'un nouveau formulaire dans Qt designer (form2.ui),
Traduit le fichier ui en fichier py (make) et importé la classe du fichier py traduit dans le fichier d'implémentation, a obtenu une instance de la classe (self.dlg2 = Ui_form2 ())
et dans la méthode run () du fichier d'implémentation, j'ai écrit:
def run2(self):
self.dlg2.show()
result = self.dlg2.exec_()
Mais je reçois un message d'erreur indiquant que ce nouveau formulaire n'a pas de méthode .show (). Doit-il hériter de quelque chose pour implémenter la méthode .show ()? Mais comment puis-je modifier le code du second formulaire afin d'hériter de quelque chose puisque toutes les modifications dans le fichier py traduit du fichier ui ne peuvent pas être enregistrées?
la source
initGui()
cette façon:self.add_action( icon_path, text=self.tr(u'plugin3'), callback=self.run3, parent=self.iface.mainWindow())
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
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:
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:
Pour que les boutons cliquent pour ouvrir une interface graphique, continuez à écrire ce qui suit:
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
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 :
Ouvrez Form_dlgtool1_dialog.py avec un éditeur afin d'appliquer les modifications suivantes:
De :
Changer pour :
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
Enfin, afin d'en obtenir une instance , écrivez ce qui suit dans la section def __init __ (self, iface) :
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
la source