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

Rencontres QGIS 2026

L'appel à participation est ouvert jusqu'au 17 novembre 2025!

#1 Mon 27 October 2025 10:57

pyjoubert
Participant assidu
Lieu: Lyon
Date d'inscription: 21 Mar 2006
Messages: 386

QGIS 3.34: Formulaire --> Action --> Externalisation du code python

Bonjour

Dans un formulaire d'attributs, j'ai placé une action de type Python.
Pour le moment, le code est entièrement décrit dans la zone qui va bien
Il fonctionne correctement.

Maintenant, afin d'être réutilisé dans d'autres formulaire, je voudrais l'externaliser dans un fichier GL_Fonctions.py placé au même niveau que le projet
Pour cela, je pensais mettre mon code dans ce fichier .py et ne faire qu'un appel dans le formulaire

Voici un extrait de mon fichier GL_Fonctions.py

Code:

# -*- coding: utf-8 -*-
mport shutil
import os
import ctypes
from qgis.utils import iface
from PyQt5.QtWidgets import QFileDialog
from qgis.core import QgsProject,QgsExpressionContextUtils

def DRY_CreerFiche():
   layer_id = '[%@layer_id%]'
   print(layer_id)
   fid = [%$id%]
   print(fid)

Et voici le code inclu dans l'action de l'ongler Action de la couche de données

Code:

import GL_Fonctions
GL_Fonctions.DRY_CreerFiche()

Depuis ce changement, le code est bien éxécuté, mais j'ai des erreurs au niveau des lignes
layer_id = '[%@layer_id%]' où il renvoie None au lieu de l'id du layer courant
fid = [%$id%] où j'ai une erreur de syntaxe pour [%$id%]

Si vous avez une idée ?
Peut-être que pour un code extenalisé il faut importer d'autres choses ?

Je sèche

Merci de votre aide et bonne journée

PYJ

Dernière modification par pyjoubert (Tue 28 October 2025 07:50)

Hors ligne

 

Pied de page des forums

Copyright Association GeoRezo