Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
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

GEODATA DAYS 2024

#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: 395

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

 

Pied de page des forums

Powered by FluxBB