Bonjour,
Je travaille régulièrement sous QGis (version 2.8.2 Wien) depuis quelques années.
Je développe régulièrement des applications Visual Studio et débute dans le développement de plugin Python appelés depuis QGis.
Mon objectif actuel est le suivant :
Afficher un formulaire personnalisé indiquant à l'utilisateur :
- les champs de l'entité sélectionnée,
- une image dont le chemin d'accès est un des champs de cette entité.
Pour réaliser cet outil, j'ai commencé par effectuer les opérations suivantes :
- Affichage des champs
- Créer une interface à partir de QtDesigner,
- Paramétrer la couche cartographique pour lui associer cette interface (via l'option "Mise en page de l'éditeur d'attribut, à partir du fichier .ui fourni"),
- Tester son fonctionnement via l'option "Afficher le formulaire de l'entité" dans la fenêtre "Identifier les résultats" ==> RAS,
- Affichage de l'image
- Ajouter un label qui contiendra l'image souhaitée,
- Créer une fonction nommée "initialisation" qui actualise ce label en fonction de l'entité sélectionnée, au chargement du formulaire,
- Indiquer à Qgis l'emplacement de cette fonction (via l'option "Fonction d'initialisation Python", en précisant le nom du fichier la contenant ainsi que le nom de la fonction)
- Et là, c'est le drame : ça ne marche pas ! Les champs continuent à s'afficher mais le label qui doit afficher l'image reste vide.
Ci-dessous, le code de la dite fonction :
from PyQt4 import QtCore, QtGui
def initialisation(Dialog):
pixmap = Qpixmap(chemin_complet.text)
lbchemin_complet.setPixmap(pixmap)
lbchemin_complet.show()
ou "chemin_complet.text" contient l'emplacement exact de l'image que je souhaite afficher
et lbchemin_complet un QLabel qui contiendra cette image.
Le fichier d'interface se nomme : fPrincipal.ui,
Le fichier contenant la fonction "initialisation" se nomme : test.py (nom temporaire).
Ci-dessous, le paramétrage dans QGis :
PS : j'ai essayé d'inclure dans cette fonction l'affiche d'une message box, et elle ne s'affiche pas. J'en déduis que la fonction n'est pas appelée mais ça ne m'aide pas à trouver comment résoudre mon problème.
Ci-dessous, le code ajouté pour la message box :
mb = QMessageBox()
mb.setText(u"Le referentiel a ete importe.")
mb.setWindowTitle(u"Importation des donnees")
mb.exec_()
Un peu (beaucoup) d'aide serait la bienvenue pour me débloquer
Merci d'avance,
Cordialement,
Liens sociaux