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