[QGIS-Developer] set data defined override expression with python?

Raymond Nijssen r.nijssen at terglobo.nl
Mon Oct 15 12:06:14 PDT 2018


So now I'd like to set another expression, quite similar, but this time 
the svg-path to a QgsSvgMarkerSymbolLayer.

Where can I find the name of that property? I found the 
QgsLayoutObject.PictureSource here:

https://github.com/qgis/QGIS/blob/c89a542365eb46317468135cb33236ecc0c3768c/src/core/layout/qgslayoutobject.h#L47

But I don't know what class should hold the data defined property 
enumeration for an svgMarkerSymbolLayer. Searching for "enum 
DataDefinedProperty" in the qgis code doesn't get me any other result.

Hope anyone can help me out here!

Kind regards,
Raymond



On 22-08-18 08:39, Raymond Nijssen wrote:
> Thank you Nyall! Does exactly what I need. Will add it to the python 
> cookbook.
> 
> Raymond
> 
> 
> 
> On 22-08-18 00:10, Nyall Dawson wrote:
>> On Wed, 22 Aug 2018 at 01:41, Raymond Nijssen <r.nijssen at terglobo.nl> 
>> wrote:
>>>
>>> Hi devs!
>>>
>>> I'd like my python plugin to set an expression for overriding a property
>>> and I have no clue how to do so. I expect there must be some generic way
>>> to set expressions.
>>>
>>> Specifically, I want to set the expression for the "Image source" of a
>>> QgsLayoutItemPicture to:
>>>
>>> '/path/to/pictures/' || attribute(@atlas_feature, 'ID') || '.svg'
>>>
>>
>> Try
>>
>>      property = QgsProperty.fromExpression( "'/path/to/pictures/' ||
>> attribute(@atlas_feature, 'ID') || '.svg'")
>>      
>> item.dataDefinedProperties().setProperty(QgsLayoutObject.PictureSource,
>> property)
>>
>> Nyall
>>
> 
> 
> _______________________________________________
> QGIS-Developer mailing list
> QGIS-Developer at lists.osgeo.org
> List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer
> Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-developer



More information about the QGIS-Developer mailing list