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é ?

#1 Thu 10 April 2025 09:46

Marcopololo
Participant actif
Lieu: Etival Clairefontaine
Date d'inscription: 23 Nov 2021
Messages: 97

QGIS: Decalage ligne dans affichage boite dialogue

Sur un affichage de d'attibuts de ma table dans un QTextEdit je rencontre deux petits soucis.
Le premier est un décalage de ligne, j'ai bien compris que cela vient de mon code puisque il affiche les dates et ensuite les travaux ce qui provoque un décalage, mais je n'arrive pas à imbriquer les deux champs c'est à dire
"date1 : travaux1"
"date2 : travaux2 "....
Par contre si je n'ai qu'une seule ligne elle se positionne bien, ce qui me parait logique.
Seconde difficulté, je n'arrive pas à formater les dates au format "dd/mm/YY"

Merci d'avance de votre aide.

Marcopololo

Code:

            def build_travaux_dates(e):
                #fields = fields.strftime("%d/%m/%Y")
                fields = [
                    'parcelles_Travaux_Date1',
                    'parcelles_Travaux_Date2',
                    'parcelles_Travaux_Date3',
                    'parcelles_Travaux_Date4',
                    'parcelles_Travaux_Date5',
                    'parcelles_Travaux_Date6'
               ]
                to_str = "\n".join([e[field] for field in fields if e[field]])
                if not to_str:
                    return 'Aucun travaux effectués ici...'
                return to_str

            def build_travaux_parcelles(e):
                fields = [
                    'parcelles_Travaux_Travaux1',
                    'parcelles_Travaux_Travaux2',
                    'parcelles_Travaux_Travaux3',
                    'parcelles_Travaux_Travaux4',
                    'parcelles_Travaux_Travaux5',
                    'parcelles_Travaux_Travaux6'
                ]
                to_str = "\n".join([e[field] for field in fields if e[field]])
                if not to_str:
                    return ''
                return to_str

            self.dlg.tavauxListe.setText(str(build_travaux_dates(e)) + " : " + str(build_travaux_parcelles(e)))

Dernière modification par Marcopololo (Thu 10 April 2025 09:53)


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

Hors ligne

 

#2 Thu 10 April 2025 10:02

Marcopololo
Participant actif
Lieu: Etival Clairefontaine
Date d'inscription: 23 Nov 2021
Messages: 97

Re: QGIS: Decalage ligne dans affichage boite dialogue

Par contre si j'imbrique mes champs je les retrouve à la ligne correctement mais il y a un passage à la ligne à chaque fois et si j'aoute au setText

Code:

+" : "

il ne se met qu'en dernière ligne ce qui est logique mais pas ce que je veux

Code:

            def build_travaux_dates(e):
                #fields = fields.strftime("%d/%m/%Y")
                fields = [
                    'parcelles_Travaux_Date1',
                    'parcelles_Travaux_Travaux1',
                    'parcelles_Travaux_Date2',
                    'parcelles_Travaux_Travaux2',
                    'parcelles_Travaux_Date3',
                    'parcelles_Travaux_Date4',
                    'parcelles_Travaux_Date5',
                    'parcelles_Travaux_Date6'
               ]

Hors ligne

 

#3 Thu 10 April 2025 11:50

Marcopololo
Participant actif
Lieu: Etival Clairefontaine
Date d'inscription: 23 Nov 2021
Messages: 97

Re: QGIS: Decalage ligne dans affichage boite dialogue

Je viens d'essayer cette approche mais cela ne colle pas au niveau de la condition, l'erreur
" to_str =  "\n".join([e[field] for field in fields])# if e[field]])
                         ~^^^^^^^
TypeError: QgsFeature.__getitem__(): arguments did not match any overloaded call:
  overload 1: argument 1 has unexpected type 'list'
  overload 2: argument 1 has unexpected type 'list'"
Cela veut dire qu'il ne sait pas choisir le champ ?


Code:

            def build_travaux_dates(e):
                #fields = fields.strftime("%d/%m/%Y")
                fields = [
                    ['parcelles_Travaux_Date1','parcelles_Travaux_Travaux1'],
                    ['parcelles_Travaux_Date2','parcelles_Travaux_Travaux2'],
                    ['parcelles_Travaux_Date3','parcelles_Travaux_Travaux2'],
                    ['parcelles_Travaux_Date4','parcelles_Travaux_Travaux2'],
                    ['parcelles_Travaux_Date5','parcelles_Travaux_Travaux2'],
                    ['parcelles_Travaux_Date6','parcelles_Travaux_Travaux2'],
               ]
                to_str =  "\n".join([e[field] for field in fields if e[field]])
                if not to_str:
                    return 'Aucun travaux effectués ici...'
                return to_str

Dernière modification par Marcopololo (Thu 10 April 2025 11:51)

Hors ligne

 

#4 Thu 10 April 2025 23:23

Marcopololo
Participant actif
Lieu: Etival Clairefontaine
Date d'inscription: 23 Nov 2021
Messages: 97

Re: QGIS: Decalage ligne dans affichage boite dialogue

Alors j'ai cherché ce qui pourrait être utilisé et j'ai trouvé les dataframe pandas. Es ce que cela peut être utilisé avec Qgis ?
Merci de votre aide
Marcopololo

Hors ligne

 

#5 Fri 11 April 2025 12:02

Marcopololo
Participant actif
Lieu: Etival Clairefontaine
Date d'inscription: 23 Nov 2021
Messages: 97

Re: QGIS: Decalage ligne dans affichage boite dialogue

Je pense avoir trouvé la solution qui marche avec des "textes" avec la console python mais le même code ne fonctionne pas dans mon plugin.

Code:

 def build_travaux_dates(e):
                #fields = fields.strftime("%d/%m/%Y")
                #fields= [
                   # ['parcelles_Travaux_Date1','parcelles_Travaux_Travaux1'],
                    #['parcelles_Travaux_Date2','parcelles_Travaux_Travaux2'],
                    #['parcelles_Travaux_Date3','parcelles_Travaux_Travaux2'],
                    #['parcelles_Travaux_Date4','parcelles_Travaux_Travaux2'],
                    #['parcelles_Travaux_Date5','parcelles_Travaux_Travaux2'],
                    #['parcelles_Travaux_Date6','parcelles_Travaux_Travaux2'],
                fields[["essai", "test"],
                    ["Bonjour","Hello"],
                    ["Au revoir","Bye"]
                ]
                for row in fields:
                    for elem in row:
                        print(elem, end=' : ')
                print()
                self.dlg.travauxListe.setText(elem, end= ' : ')

Merci de vos lumières
Marcopololo

Hors ligne

 

Pied de page des forums

Copyright Association GeoRezo