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 Fri 23 November 2018 10:31

michel56
Participant assidu
Lieu: Lorient
Date d'inscription: 14 Jul 2012
Messages: 474

QGIS 3.4.1: Erreur Python avec formulaire UI

Bonjour,

J'ai un formulaire ui lié avec un script python à mon projet Qgis qui fonctionne bien.

Le message d'erreur s'affiche quand je veux ouvrir la table des attributs. (La table s'ouvre malgré ce code)

le code qui bloque est le suivant:

Code:

    label = dialog.findChild(QLabel,"label")        
    
    if feature.geometry() != None:
       label.setPixmap(QPixmap("./SVG/" + str(feature["REGISTRE"]) + '.svg'))

et l'erreur python:

Code:

Traceback (most recent call last):
  File "", line 1, in 
  File "", line 267, in formOpen
KeyError: 'REGISTRE'

Dernière modification par michel56 (Fri 23 November 2018 10:31)


Opérateur cartographique & DAO & PHP.

Hors ligne

 

#2 Fri 23 November 2018 12:25

dominique.lys
Participant assidu
Date d'inscription: 5 Oct 2006
Messages: 473
Site web

Re: QGIS 3.4.1: Erreur Python avec formulaire UI

Le champs registre n'existe pas.

Hors ligne

 

#3 Fri 23 November 2018 12:32

michel56
Participant assidu
Lieu: Lorient
Date d'inscription: 14 Jul 2012
Messages: 474

Re: QGIS 3.4.1: Erreur Python avec formulaire UI

Le champ existe bien. Le formulaire fonctionne.

Si je supprime le code:

Code:

label = dialog.findChild(QLabel,"label") 

 if feature.geometry() != None:
       label.setPixmap(QPixmap("./SVG/" + str(feature["REGISTRE"]) + '.svg')

j'ai pas de message d'erreur mais mon image ne s'affiche pas dans mon formulaire.

Voir pièce jointe

Dernière modification par michel56 (Fri 23 November 2018 12:35)


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

Opérateur cartographique & DAO & PHP.

Hors ligne

 

#4 Fri 23 November 2018 17:37

dominique.lys
Participant assidu
Date d'inscription: 5 Oct 2006
Messages: 473
Site web

Re: QGIS 3.4.1: Erreur Python avec formulaire UI

L'erreur est claire, la clé REGISTRE n'existe pas pour votre variable feature, autrement dit à un moment donnée dans l’exécution du code la variable feature ne correspond pas à ce que vous attendez. Impossible pour nous de débugger davantage sans savoir comment cette variable est affectée. A vous de contrôler à différents moments du code le type et le contenu de cette variable, pour déterminer à quel moment et pourquoi son état n'est pas/plus celui attendu.

Hors ligne

 

#5 Fri 23 November 2018 20:46

michel56
Participant assidu
Lieu: Lorient
Date d'inscription: 14 Jul 2012
Messages: 474

Re: QGIS 3.4.1: Erreur Python avec formulaire UI

Merci pour vos réponses.

Pour info: c'est mon premier code en python.

Le code sert à afficher une image à l'ouverture du formulaire UI. Dans un QLabel nommé label.
C'est le seul code que j'ai.

Le formulaire fonctionne très bien. C'est en ouvrant la table des attributs que j'ai le message d'erreur.

Quand j'ouvre la table, je ne clique pas sur un objet.

Dernière modification par michel56 (Sat 24 November 2018 10:48)


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

Opérateur cartographique & DAO & PHP.

Hors ligne

 

#6 Sat 24 November 2018 22:49

dominique.lys
Participant assidu
Date d'inscription: 5 Oct 2006
Messages: 473
Site web

Re: QGIS 3.4.1: Erreur Python avec formulaire UI

Dans ce cas c'est que le test

Code:

 if feature.geometry() != None:

n'est pas vrai lorsqu'il n'y a pas d'objet passé à la fonction, la valeur feature.geometry() ne vaut pas None mais autre chose. A mon avis le plus simple est de tester directement la variable feature en écrivant

Code:

if feature:

Hors ligne

 

#7 Sun 25 November 2018 09:02

michel56
Participant assidu
Lieu: Lorient
Date d'inscription: 14 Jul 2012
Messages: 474

Re: QGIS 3.4.1: Erreur Python avec formulaire UI

j'ai fait le test et j'ai le même message d'erreur.


Opérateur cartographique & DAO & PHP.

Hors ligne

 

#8 Sun 25 November 2018 09:47

dominique.lys
Participant assidu
Date d'inscription: 5 Oct 2006
Messages: 473
Site web

Re: QGIS 3.4.1: Erreur Python avec formulaire UI

ok trop ambitieux, dans ce cas

Code:

if feature.hasGeometry():

devrait le faire !

https://qgis.org/pyqgis/3.0/core/Featur … ature.html

Hors ligne

 

#9 Sun 25 November 2018 10:18

michel56
Participant assidu
Lieu: Lorient
Date d'inscription: 14 Jul 2012
Messages: 474

Re: QGIS 3.4.1: Erreur Python avec formulaire UI

OK ça fonctionne.

Plus de message d'erreur avec ce code.

Je vais pouvoir faire mon jalonnement sur terrain. (Avec Qfield si je trouve une tablette Android)

Merci pour votre aide.

Dernière modification par michel56 (Sun 25 November 2018 10:25)


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

Opérateur cartographique & DAO & PHP.

Hors ligne

 

#10 Wed 28 November 2018 12:27

JD
Moderateur
Date d'inscription: 8 Aug 2013
Messages: 726

Re: QGIS 3.4.1: Erreur Python avec formulaire UI

michel56 a écrit:

Je vais pouvoir faire mon jalonnement sur terrain. (Avec Qfield si je trouve une tablette Android)


Python et PyQt sont disponibles sous Qfield ?
Pas certain de cela !

Dernière modification par lejedi76 (Wed 28 November 2018 12:28)

Hors ligne

 

#11 Wed 28 November 2018 13:35

michel56
Participant assidu
Lieu: Lorient
Date d'inscription: 14 Jul 2012
Messages: 474

Re: QGIS 3.4.1: Erreur Python avec formulaire UI

Je ne sais pas? Je pensai que Qgis fonctionnait avec Python donc Qfield également.


Mais si ça fonctionne pas je prends mon portable. Les orthophotos sont sur le portable et s'ouvrent avec un fichier vrt.
Pas besoin d'internet.

Dernière modification par michel56 (Wed 28 November 2018 13:36)


Opérateur cartographique & DAO & PHP.

Hors ligne

 

#12 Thu 29 November 2018 14:08

haubourg
Participant assidu
Lieu: Grenoble
Date d'inscription: 7 Sep 2005
Messages: 257
Site web

Re: QGIS 3.4.1: Erreur Python avec formulaire UI

Qfield est sur Android, et l'environnement python n'y est pas disponible facilement du tout.
Les pistes pour l'ajout de comportements coté client sont plus sur le javascript pour l'instant.

Hors ligne

 

Pied de page des forums

Powered by FluxBB