[Qgis-user] Re: Labels not visible when setting them programmatically.

Christophe Damour sigeal at sigeal.com
Thu Apr 2 02:08:15 PDT 2015


Hi,

I have the same problem when I tried to set labels from a python plugin :

With this code, labels are correctly displayed without having to apply 
layer properties, but only for points or polygons layers.
For lines layers, I have to apply layer properties in order to display 
labels.
         palLayer = QgsPalLayerSettings()
         palLayer.readFromLayer(self.serpLayer)
         palLayer.enabled = True
         palLayer.fieldName = 'id'
         palLayer.textFont.setPointSize(10)
         palLayer.writeToLayer(self.serpLayer)

With this code, I get the same problem for points, lines and polygons 
layers :
         self.serpLayer.setCustomProperty('labeling', 'pal')
         self.serpLayer.setCustomProperty('labeling/enabled', 'true')
         self.serpLayer.setCustomProperty('labeling/fieldName', 'id')
         self.serpLayer.setCustomProperty('labeling/fontSize', '10')

self.serpLayer.triggerRepaint() and/or self.iface.mapCanvas().refresh() 
don't help.

Hope someone can help...

-- 
Christophe

Le 01/04/2015 14:20, Werner Macho a écrit :
> hmm -
> well - as the qchainage plugin clearly sets labeling (when enabled)
> you could take it and search for the missing piece..
> regards
> Werner
>
> On Wed, Apr 1, 2015 at 2:19 PM, Casper Børgesen (CABO) <CABO at niras.dk> wrote:
>> No the triggerRepaint() didn't work, just to clarify that I tried that :)
>>
>> Regards, Casper
>>
>> -----Original Message-----
>> From: Werner Macho [mailto:werner.macho at gmail.com]
>> Sent: 1. april 2015 13:52
>> To: Casper Børgesen (CABO)
>> Cc: qgis-user at lists.osgeo.org
>> Subject: Re: [Qgis-user] Labels not visible when setting them programmatically.
>>
>> Hi!
>>
>> I thought maybe it is the
>> triggerRepaint()
>>
>> but it was just a guess.
>>
>> regards
>> Werner
>>
>> On Wed, Apr 1, 2015 at 1:48 PM, Casper Børgesen (CABO) <CABO at niras.dk> wrote:
>>> Hi Werner
>>>
>>> Sadly no, it does not.
>>>
>>>
>>> Regards, Casper
>>>
>>> -----Original Message-----
>>> From: Werner Macho [mailto:werner.macho at gmail.com]
>>> Sent: 1. april 2015 13:43
>>> To: Casper Børgesen (CABO)
>>> Cc: qgis-user at lists.osgeo.org
>>> Subject: Re: [Qgis-user] Labels not visible when setting them programmatically.
>>>
>>> Hi,
>>> does
>>> https://github.com/mach0/qchainage/blob/master/chainagetool.py
>>>
>>> line 150 ff help you?
>>>
>>> regards
>>> Werner
>>>
>>> On Wed, Apr 1, 2015 at 1:25 PM, Casper Børgesen (CABO) <CABO at niras.dk> wrote:
>>>> I’m trying to programmatically set and enable labelling on a layer
>>>> using Python in QGis 2.9.0.
>>>>
>>>>
>>>>
>>>>          label = QgsPalLayerSettings()
>>>>
>>>>          label.readFromLayer(myLayer)
>>>>
>>>>
>>>>
>>>>          label.enabled = True
>>>>
>>>>          label.fieldName = 'myField'
>>>>
>>>>
>>>>
>>>>          # Just to change something clearly visible.
>>>>
>>>>          label.textColor = QColor(255,0,0,255)
>>>>
>>>>
>>>>
>>>>          label.writeToLayer(myLayer)
>>>>
>>>>
>>>>
>>>> This doesn’t enable labelling, but if I enter the Layer Properties on
>>>> myLayer, everything looks okay and when pressing Apply, the labels
>>>> become visible.
>>>>
>>>>
>>>>
>>>> Is there something I need to set to avoid having to manually click
>>>> Apply to get the labels visible?
>>>>
>>>>
>>>>
>>>> Calling iface.mapCanvas().refresh() afterwards doesn’t work.
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> Regards, Casper
>>>>
>>>>
>>>> _______________________________________________
>>>> Qgis-user mailing list
>>>> Qgis-user at lists.osgeo.org
>>>> http://lists.osgeo.org/mailman/listinfo/qgis-user
> _______________________________________________
> Qgis-user mailing list
> Qgis-user at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/qgis-user


---
Ce courrier électronique ne contient aucun virus ou logiciel malveillant parce que la protection avast! Antivirus est active.
http://www.avast.com




More information about the Qgis-user mailing list