#1 Tue 30 January 2018 23:00
- jonathanD
- Juste Inscrit !
- Date d'inscription: 29 May 2013
- Messages: 2
QGIS / PyQGIS: update/refresh composer legend
Bonjour,
Je cherche à modifier en python la source de donnée d'une couche raster puis mettre à jour mon composer et enfin l'enregistrer.
Pour modifier ma source de donnée j'ai trouvé ce qu'il faut ici :
https://geogear.wordpress.com/2015/05/1 … th-python/
Le problème est que je perds la symbologie de cette couche dans la légende de mon composer.
J'ai essayé différents codes mais aucun ne met à jour ma légende
Code:
iface.activeComposers()[0].composition().refreshItems() for i in iface.activeComposers()[0].composition().items(): if isinstance(i,QgsComposerLegend): legend = i legend.updateLegend()
La seule solution que j'ai trouvé pour le moment est d'utiliser la méthode "setAutoUpdateModel" sur ma légende et de passé à True/False la MAJ auto pour forcer la MAJ de la légende, mais cette solution n'est pas optimal!
=> Je voudrais pouvoir mettre à jour juste la symbologie pour une couche en particulier dans la légende de mon composer (un peu comme quand dans l'interface de mon composer je clique sur ma légende puis dans "propriété de l'objet" clique droit sur ma couche et "remettre à défaut").
Quelqu'un aurait-il une idée pour faire cela ? Je suis un peu bloqué !
Merci pour votre aide.
Hors ligne
#2 Thu 01 February 2018 17:56
- jonathanD
- Juste Inscrit !
- Date d'inscription: 29 May 2013
- Messages: 2
Re: QGIS / PyQGIS: update/refresh composer legend
J'ai trouvé une solution en me basant sur ce post
https://gis.stackexchange.com/questions … yqgis?rq=1
La voici : Je "copie/colle" le renderer
Code:
for legendLyr in iface.mapCanvas().layers(): renderer = legendLyr.renderer() myRenderer = renderer.clone() legendLyr.setRenderer(myRenderer) legendLyr.triggerRepaint()
Ce n'est peut être pas optimum, mais ça répond à mon besoin.
Hors ligne