Discussion:
[Qgis-user] Labels not visible when setting them programmatically.
Casper Børgesen (CABO)
2015-04-01 11:25:08 UTC
Permalink
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
Werner Macho
2015-04-01 11:42:39 UTC
Permalink
Hi,
does
https://github.com/mach0/qchainage/blob/master/chainagetool.py

line 150 ff help you?

regards
Werner
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
http://lists.osgeo.org/mailman/listinfo/qgis-user
Casper Børgesen (CABO)
2015-04-01 11:48:16 UTC
Permalink
Hi Werner

Sadly no, it does not.


Regards, Casper

-----Original Message-----
From: Werner Macho [mailto:***@gmail.com]
Sent: 1. april 2015 13:43
To: Casper Børgesen (CABO)
Cc: qgis-***@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
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
http://lists.osgeo.org/mailman/listinfo/qgis-user
Werner Macho
2015-04-01 11:51:42 UTC
Permalink
Hi!

I thought maybe it is the
triggerRepaint()

but it was just a guess.

regards
Werner
Post by Casper Børgesen (CABO)
Hi Werner
Sadly no, it does not.
Regards, Casper
-----Original Message-----
Sent: 1. april 2015 13:43
To: Casper Børgesen (CABO)
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
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
http://lists.osgeo.org/mailman/listinfo/qgis-user
Casper Børgesen (CABO)
2015-04-01 12:19:35 UTC
Permalink
No the triggerRepaint() didn't work, just to clarify that I tried that :)

Regards, Casper

-----Original Message-----
From: Werner Macho [mailto:***@gmail.com]
Sent: 1. april 2015 13:52
To: Casper Børgesen (CABO)
Cc: qgis-***@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
Post by Casper Børgesen (CABO)
Hi Werner
Sadly no, it does not.
Regards, Casper
-----Original Message-----
Sent: 1. april 2015 13:43
To: Casper Børgesen (CABO)
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
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
http://lists.osgeo.org/mailman/listinfo/qgis-user
Werner Macho
2015-04-01 12:20:48 UTC
Permalink
hmm -
well - as the qchainage plugin clearly sets labeling (when enabled)
you could take it and search for the missing piece..
regards
Werner
Post by Casper Børgesen (CABO)
No the triggerRepaint() didn't work, just to clarify that I tried that :)
Regards, Casper
-----Original Message-----
Sent: 1. april 2015 13:52
To: Casper Børgesen (CABO)
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
Post by Casper Børgesen (CABO)
Hi Werner
Sadly no, it does not.
Regards, Casper
-----Original Message-----
Sent: 1. april 2015 13:43
To: Casper Børgesen (CABO)
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
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
http://lists.osgeo.org/mailman/listinfo/qgis-user
Christophe Damour
2015-04-02 09:08:15 UTC
Permalink
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
Post by Werner Macho
hmm -
well - as the qchainage plugin clearly sets labeling (when enabled)
you could take it and search for the missing piece..
regards
Werner
Post by Casper Børgesen (CABO)
No the triggerRepaint() didn't work, just to clarify that I tried that :)
Regards, Casper
-----Original Message-----
Sent: 1. april 2015 13:52
To: Casper Børgesen (CABO)
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
Post by Casper Børgesen (CABO)
Hi Werner
Sadly no, it does not.
Regards, Casper
-----Original Message-----
Sent: 1. april 2015 13:43
To: Casper Børgesen (CABO)
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
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
http://lists.osgeo.org/mailman/listinfo/qgis-user
_______________________________________________
Qgis-user mailing list
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
Loading...