[Qgis-user] QGIS 2.18 -Changing layer rule-based style transparency

Raymond Nijssen r.nijssen at terglobo.nl
Sat Jan 5 08:04:14 PST 2019


Already got it working, using the setLegendSymbolItem() on the renderer:


layer = iface.activeLayer()
renderer = layer.renderer()
symbolItems = renderer.legendSymbolItems()

for symbolItem in symbolItems:
     print(symbolItem)
     symbol = symbolItem.symbol()
     color = symbol.color()
     color.setAlpha(255 * 0.8)
     symbol.setColor(color)
     renderer.setLegendSymbolItem(symbolItem.ruleKey(), symbol)

layer.triggerRepaint()



No clue if it will run in 2.18, expecting not. Hoping you can upgrade.

Raymond

On 05-01-19 13:22, Raymond Nijssen wrote:
> Hi Marian,
> 
> As I understand you want to set every symbol in your rule based 
> classification to 80% transparent (instead of the entire layer)?
> 
> I tried to write a qgis (v3.4) script but unfortunately it crashes my 
> qgis. So I hope somebody here can correct it, or maybe you will find the 
> solution yourself.
> 
> I'm doing many prints to see the return values. The crash happens when 
> in line 18: symbolItem.setSymbol(symbol)
> 
> ---
> 
> layer = iface.activeLayer()
> 
> renderer = layer.renderer()
> 
> symbolItems = renderer.legendSymbolItems()
> print(symbolItems)
> 
> for symbolItem in symbolItems:
>      print('---')
>      print(symbolItem)
>      symbol = symbolItem.symbol()
>      print(symbol)
>      color = symbol.color()
>      print(color.name(1))
>      color.setAlpha(255*0.8)
>      print(color.name(1))
>      symbol.setColor(color)
>      symbolItem.setSymbol(symbol) # !!! this makes qgis crash
> 
> layer.triggerRepaint()
> 
> ---
> 
> When crashing, qgis outputs:
> 
> QGIS died on signal 11Could not attach to process.  If your uid matches 
> the uid of the target
> process, check the setting of /proc/sys/kernel/yama/ptrace_scope, or try
> again as the root user.  For more details, see /etc/sysctl.d/10-ptrace.conf
> ptrace: Operation not permitted.
> No thread selected
> No stack.
> gdb returned 0
> Aborted (core dumped)
> 
> ---
> 
> Kind regards,
> Raymond
> 
> 
> On 04-01-19 22:32, Tudorache, Marian wrote:
>> Hi,
>>
>> I have a polygon type vector layer with rule-based style.
>>
>> I need to change programmatically the layer transparency.
>>
>> I used the following code:
>>
>> layer = iface.activeLayer()
>>
>> layer.setTransparency(80)
>>
>> layer.triggerRepaint()
>>
>> This works only if I want to see layers which are under the active one 
>> but it does not work for the features inside active layer.
>>
>> When there are identical polygons which overlap within active layer, I 
>> can only see the top one. If I select a polygon which is underneath it 
>> is not displayed as selected.
>>
>> I can make it work if I manually open the layer style and double click 
>> on rule to open Rule properties and set the transparency for the rule.
>>
>> How can I change the rule transparency programmatically?
>>
>> Thank you,
>>
>> Marian
>>
>>
>> ------------------------------------------------------------------------
>>
>> This electronic message, as well as any transmitted files included in 
>> the electronic message, may contain privileged or confidential 
>> information and is intended solely for the use of the individual(s) or 
>> entity to which it is addressed. If you have received this electronic 
>> message in error please notify the sender immediately and delete the 
>> electronic message. Any unauthorized copying, disclosure or 
>> distribution of the electronic message is strictly forbidden. NAV 
>> CANADA accepts no liability for any damage caused by any virus and/or 
>> other malicious code transmitted by this electronic communication.
>>
>> Le présent message électronique et tout fichier qui peut y être joint 
>> peuvent contenir des renseignements privilégiés ou confidentiels 
>> destinés à l’usage exclusif des personnes ou des organismes à qui ils 
>> s’adressent. Si vous avez reçu ce message électronique par erreur, 
>> veuillez en informer l’expéditeur immédiatement et supprimez le. Toute 
>> reproduction, divulgation ou distribution du présent message 
>> électronique est strictement interdite. NAV CANADA n’assume aucune 
>> responsabilité en cas de dommage causé par tout virus ou autre 
>> programme malveillant transmis par ce message électronique.
>>
>> _______________________________________________
>> Qgis-user mailing list
>> Qgis-user at lists.osgeo.org
>> List info: https://lists.osgeo.org/mailman/listinfo/qgis-user
>> Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-user
>>
> _______________________________________________
> Qgis-user mailing list
> Qgis-user at lists.osgeo.org
> List info: https://lists.osgeo.org/mailman/listinfo/qgis-user
> Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-user


More information about the Qgis-user mailing list