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 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Fri 27 May 2016 09:04

Ferreira_Guillaume
Participant occasionnel
Date d'inscription: 19 Jan 2015
Messages: 10

QGIS & Plugin python: recherche syntaxe couleur étiquette

Bonjour,

Je travaille actuellement sur un plugin Qgis et je n'arrive pas à trouver sur le web la syntaxe pour changer la couleur des étiquettes,
voici le code que j'ai pour l'instant:

       

Code:

            #Première étiquette    
            pl.setCustomProperty("labeling", "pal")   
            # On active l'étiquette      
        pl.setCustomProperty("labeling/enabled", True) 
            #On choisit de faire apparaitre le   numéro d'ilot   
        pl.setCustomProperty("labeling/fieldName", "NUMERO_ILOT")
            #taille du texte           
        pl.setCustomProperty("labeling/fontSize", "10")
            #Style du texte
        pl.setCustomProperty("labeling/fontFamily", "Arial")
            #On active le Tampon              
        pl.setCustomProperty("labeling/bufferDraw", True)
            #Largeur du Tampon              
        pl.setCustomProperty("labeling/bufferSize", "1")
            #Couleur du Tampon           
        pl.setCustomProperty("labeling/bufferColor", "white")
            #Correspond à l'emplacement 1 pour Décalage par rapport au centroide              
        pl.setCustomProperty("labeling/placement", "1")
            #On rajoute un décalage en x en unité e carte           
        pl.setCustomProperty("labeling/xOffset", "20")
            #On rajoute un décalage en y en unité e carte               
        pl.setCustomProperty("labeling/yOffset", "20")
            #Deuxième  étiquette          
        pl2.setCustomProperty("labeling", "pal")
            # On active l'étiquette              
        pl2.setCustomProperty("labeling/enabled", True)
            #On choisit de faire apparaitre le   numéro d'ilot        
        pl2.setCustomProperty("labeling/fieldName", "NUMERO_ILOT")
            #taille du texte               
        pl2.setCustomProperty("labeling/fontSize", "10")
            #Style du texte          
        pl2.setCustomProperty("labeling/fontFamily", "Arial")
            #On active le Tampon           
        pl2.setCustomProperty("labeling/bufferDraw", True)
            #Largeur du Tampon           
        pl2.setCustomProperty("labeling/bufferSize", "1")
            #Couleur du Tampon          
        pl2.setCustomProperty("labeling/bufferColor", "white")

j'ai essayé :

Code:

pl2.setCustomProperty("labeling/fontColor", QtGui.QColor.fromRgb(255,0,0,255))

Code:

pl2.setCustomProperty("labeling/color", "red")

Mais rien ne fonctionne, quelqu'un à-t-il une solution ?

Hors ligne

 

#2 Fri 27 May 2016 10:14

dominique.lys
Participant assidu
Date d'inscription: 5 Oct 2006
Messages: 473
Site web

Re: QGIS & Plugin python: recherche syntaxe couleur étiquette

Bonjour,

Plutôt que d'utiliser layer.setCustomProperty vous pouvez utiliser l'object QgsPalLayerSettings:

Code:

from qgis.utils import iface

lay = iface.activeLayer()
pl = QgsPalLayerSettings()
pl.readFromLayer(lay)

Vous pouvez ensuite utiliser l'instruction print(dir(pl)) pour lister les propriétés et méthodes de l'objet QgsPalLayerSettings. Vous verrez qu'il existe un attribut textColor.

Code:

from PyQt4.QtGui import QColor

red = QColor(255,0,0)

pl.enabled = True
pl.textColor = red

pl.writeToLayer(lay)

Hors ligne

 

#3 Fri 27 May 2016 14:28

Ferreira_Guillaume
Participant occasionnel
Date d'inscription: 19 Jan 2015
Messages: 10

Re: QGIS & Plugin python: recherche syntaxe couleur étiquette

Merci beaucoup! Voici le code une fois rectifié :

Code:

   palLayer = QgsPalLayerSettings()
        palLayer.readFromLayer(pl)
        #On crée une variable avec un code couleur rgb
        red = QtGui.QColor(255,0,0)
        #on active l'etiquette
        palLayer.enabled = True 
        #On ajoute la couleur précédement initialisé
        palLayer.textColor = red
        #On choisit un champ
        palLayer.fieldName='NUMERO_ILOT'
        #On active le Tampon    
        palLayer.bufferDraw = True
        #Largeur du Tampon            
        palLayer.bufferSize = 1 
        #Correspond à l'emplacement 1 pour Décalage par rapport au centroide            
        palLayer.placement = 1
        #On rajoute un décalage en x en unité de carte             
        palLayer.xOffset = 20  
        #On rajoute un décalage en y en unité de carte             
        palLayer.yOffset = 20    
        #on enregistre la couche
        palLayer.writeToLayer(pl) 
        #On rafraichit le canva
        iface.mapCanvas().refresh()

Hors ligne

 

Pied de page des forums

Powered by FluxBB