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

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Tue 27 May 2014 14:19

hakima elchahlafi
Participant occasionnel
Lieu: Beni Mellal Morocco
Date d'inscription: 7 Jan 2014
Messages: 18

QGIS : script du plugin (help)

#aprés l'elaboration du plugin j'ai essaye de modifier le code pour que l'extension me permet d'afficher les couches actives mais je pense que il y a une erreur
#voila le code :

# Import the PyQt and QGIS libraries
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from qgis.core import *
from qgis.mapcanvas import*
# Initialize Qt resources from file resources.py
import resources_rc
# Import the code for the dialog
from izisse_testdialog import izisse_testDialog
import os.path


class izisse_test:

    def __init__(self, iface):
        # Save reference to the QGIS interface
        self.iface = iface
        # initialize plugin directory
        self.plugin_dir = os.path.dirname(__file__)
        # initialize locale
        locale = QSettings().value("locale/userLocale")[0:2]
        localePath = os.path.join(self.plugin_dir, 'i18n', 'izisse_test_{}.qm'.format(locale))

        if os.path.exists(localePath):
            self.translator = QTranslator()
            self.translator.load(localePath)

            if qVersion() > '4.3.3':
                QCoreApplication.installTranslator(self.translator)

        # Create the dialog (after translation) and keep reference
        self.dlg = izisse_testDialog()

    def initGui(self):
        # Create action that will start plugin configuration
        self.action = QAction(
            QIcon(":/plugins/izisse_test/icon.png"),
            u"izisse.....", self.iface.mainWindow())
        # connect the action to the run method
        self.action.triggered.connect(self.run)

        # Add toolbar button and menu item
        self.iface.addToolBarIcon(self.action)
        self.iface.addPluginToMenu(u"&izisse", self.action)

    def unload(self):
        # Remove the plugin menu item and icon
        self.iface.removePluginMenu(u"&izisse", self.action)
        self.iface.removeToolBarIcon(self.action)

    # run method that performs all the real work
    def run(self):
        # show the dialog
        self.dlg.show()
        # Run the dialog event loop
        result = self.dlg.exec_()
        # See if OK was pressed
        if result == 1:
        # show the active layers
     mapCanvas = self.iface.mapCanvas()
     if mapCanvas.layerCount() == 0: QMessageBox.warning(self.iface.mainWindow(), "izisse_test Plugin" , ("No active layer found"), QMessageBox.Ok) return layerName = ""
     for i in range(mapCanvas.layerCount()-1,-1,-1): layer = mapCanvas.layer(i) layerName += layer.name()+"\n"
     # create and show the dialog
     dlg = showActiveLayerDialog() dlg.ui.plainTextEdit.appendPlainText(layerName) dlg.show() result = dlg.exec_()
     # See if OK was pressed
     if result == 1: QMessageBox.warning(self.iface.mainWindow(), "izisse_test Plugin", ("Voulez allez quitter le plugin !"), QMessageBox.Ok)

Hors ligne

 

#2 Wed 28 May 2014 00:41

Leyan
Participant assidu
Date d'inscription: 14 Oct 2013
Messages: 160

Re: QGIS : script du plugin (help)

Quelle est l'erreur ? Il y a un message ? Est-ce que le plugin fonctionnait avant que tu ne fasses des modifications ?

Hors ligne

 

#3 Wed 28 May 2014 15:42

hakima elchahlafi
Participant occasionnel
Lieu: Beni Mellal Morocco
Date d'inscription: 7 Jan 2014
Messages: 18

Re: QGIS : script du plugin (help)

oui l'extension avant a bien fonctionné mais quand j'ai modifié le code et j'ai essayer de redémarrer le logiciel l'erreur se lance


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

Hors ligne

 

#4 Thu 29 May 2014 11:33

B.Abdelmalek
Participant occasionnel
Date d'inscription: 24 Apr 2014
Messages: 29

Re: QGIS : script du plugin (help)

Essaye d'implémenter ton code dans le fichier izisse_testdialog.py sans modifier la méthode run.

Hors ligne

 

#5 Thu 29 May 2014 13:17

hakima elchahlafi
Participant occasionnel
Lieu: Beni Mellal Morocco
Date d'inscription: 7 Jan 2014
Messages: 18

Re: QGIS : script du plugin (help)

oui j'ai essayer ca marche bien mais l'extension ne fait aucune fonction

Hors ligne

 

#6 Fri 30 May 2014 11:26

B.Abdelmalek
Participant occasionnel
Date d'inscription: 24 Apr 2014
Messages: 29

Re: QGIS : script du plugin (help)

Revoir ton code, si ton code est bien fait, surement ca va marcher

Hors ligne

 

#7 Sat 31 May 2014 18:28

SANTANNA
Moderateur
Lieu: Angers
Date d'inscription: 18 Jan 2008
Messages: 3947

Re: QGIS : script du plugin (help)

Bonjour,
Le message d'erreur qui est attaché évoque un problème d'indentation. Et en effet, dans votre méthode run, vous avez:

if result == 1:
        # show the active layers
     mapCanvas = self.iface.mapCanvas()


La règle de l'indentation dans le if n'est pas du tout respectée ici. Décalez la dernière ligne (et les suivantes?) vers l'intérieur et ça devrait s'arranger.

Hors ligne

 

#8 Mon 09 June 2014 13:28

hakima elchahlafi
Participant occasionnel
Lieu: Beni Mellal Morocco
Date d'inscription: 7 Jan 2014
Messages: 18

Re: QGIS : script du plugin (help)

@SANTANNA merci pour ta reponse
Mais je suis debutante en langage python tu peux expliquer mieux et merci smile

Hors ligne

 

#9 Tue 10 June 2014 01:44

SANTANNA
Moderateur
Lieu: Angers
Date d'inscription: 18 Jan 2008
Messages: 3947

Re: QGIS : script du plugin (help)

Bonjour,
Dans Python, sur une ligne, là où commence le code est très important. Lorsque tu alignes verticalement le début des lignes de codes, ces instructions sont de même niveau. Si elles ne sont pas alignées, Python considère que l'instruction la plus décalée vers la droite dépend de celle au-dessus qui commence plus à gauche.

Concrètement, dans ton cas, les instructions qui dépendent du if doivent être plus décalées vers la droite (une tabulation ou un même nombre d'espaces) que la ligne du if et doivent être alignées entre elles. Alors que dans l'exemple ci-dessus, l'instruction mapCanvas = self.iface.mapCanvas() commence plus tôt que if. il faut ajouter quelques espaces en début de ligne pour qu'elle commence après le if.
Je ne sais pas trop comment expliquer mais ces infos, je pense que tu les trouveras dans toute doc sur Python

Hors ligne

 

Pied de page des forums

Powered by FluxBB