#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
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: 3933
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
Hors ligne
#9 Tue 10 June 2014 01:44
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3933
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