#1 Mon 08 February 2010 11:49
- jmz
- Participant actif
- Lieu: Anthon
- Date d'inscription: 5 Sep 2005
- Messages: 142
QGIS Encelade : Python Plugin ?
Bonjour,
Je travaille sur un plugin en python pour Qgis version 'Qgis Encelade'. le souci est que je n'arrive pas à accéder à mon interface PyQgis (ou Qgis api, je ne connais pas la différence) depuis le code d'un de mes scripts.
Mon fichier est plugingui_ui.py, c'est à dire le gros fichier du plugin qui contient la description de ma classe.
Au début, je fais bien 'from qgis.gui import *' pour disposer de ma classe QgisInterface (car je veux accéder à aux méthodes mapCanvas() et autres qui sont accessibles depuis la classe QgisInterface). Le problème est que Qgis et / ou Python me renvoie une erreur car ma classe QgisInterface est une classe abstraite et que je devrais disposer d'une instance d'elle-même pour accéder aux méthodes requises.
Si quelqu'un peut m'expliquer comment j'instancie cette classe ou de quelle manière je peux arriver à mes fin, c'est à dire à une classe QgisInterface instanciée ?!
Merci
Jmz
Hors ligne
#2 Tue 09 February 2010 17:03
- cyrille
- Participant assidu
- Date d'inscription: 7 Feb 2006
- Messages: 401
Re: QGIS Encelade : Python Plugin ?
Bonjour, as tu regardé le blog de http://www.carsonfarmer.com/?p=560#more-560 , il y a des changements intervenus avec la version que tu utilises.
Code:
from qgis.core import iface # import iface (interface) from qgis.analysis import QgsGeometryAnalyzer # import (par of) the analysis library mc = iface.mapCanvas() # get a reference to the map canvas layer = mc.layer(0) # get a reference to the first layer in the layer list QgsGeometryAnalyzer().buffer(layer, "output_path.shp", 100, False, False, -1) # per
Dernière modification par cyrille (Tue 09 February 2010 17:05)
Hors ligne
#3 Wed 10 February 2010 20:58
- jmz
- Participant actif
- Lieu: Anthon
- Date d'inscription: 5 Sep 2005
- Messages: 142
Re: QGIS Encelade : Python Plugin ?
Bonjour,
Oui, j'ai déjà lu ce blog. Malheureusement, j'ai un message d'erreur si j'importe iface (qui n'est pas reconnu).
from qgis.core import iface
ImportError: cannot import name iface
...
Je vais essayer de décortiquer les plugins de carson farmer, et apres je lui ferai un mail directement si jamais .
Merci
jmz
Hors ligne
#4 Thu 11 February 2010 09:09
- JRM
- Participant assidu
- Lieu: Arras
- Date d'inscription: 15 Apr 2009
- Messages: 521
Re: QGIS Encelade : Python Plugin ?
Essaye de passer par la liste qgis-dev plutôt, comme ça la solution éventuelle est mutualisé.
Hors ligne
#5 Thu 11 February 2010 09:39
- jmz
- Participant actif
- Lieu: Anthon
- Date d'inscription: 5 Sep 2005
- Messages: 142
Re: QGIS Encelade : Python Plugin ?
entendu, je vais regarder ça
Hors ligne
#6 Thu 11 February 2010 17:02
- jmz
- Participant actif
- Lieu: Anthon
- Date d'inscription: 5 Sep 2005
- Messages: 142
Re: QGIS Encelade : Python Plugin ?
Bonjour,
J'ai trouvé une solution de contournement à mon problème, pour accéder aux layers il faut passer par le layer registry :
Code:
layermap = QgsMapLayerRegistry.instance().mapLayers() for name, layer in layermap.iteritems(): self.comboBox.addItem(layer.name())
Jmz
Hors ligne