#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)
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)
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)
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
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
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