Code below changes the color of all the selected features based on the last condition it satisfied instead of changing the color of the feature which satisfied the condition.

for f in FEATURES:

    total = f['parkeer_approx']
    alloted = parking_capacity[f.id()-int(1)]['parking_capacity']


    if total == alloted:
        print('in red')

    elif alloted > 0 and alloted < total:
        print('in orange')

        print('in green')

What I want is to change the color of each selected feature separately based on the conditions defined in the code above.

How can I achieve that?

  • 1
    Don't think it's possible to have more than one selection colour at any time. The easiest would be to set a style for the layer such as a rule-based style and set your expressions with your chosen colour. Perhaps this post might help: How to programmatically set a rule-based renderer in QGIS?
    – Joseph
    Jul 30, 2019 at 10:09
  • @Joseph is it possible to apply rule-based style on selected features only? If yes then how? Jul 30, 2019 at 10:14
  • 2
    In QGIS 3, there is a function in the rule-based style called is_selected() which checks if the feature is selected. You could set up an if expression to apply a style if the feature is selected or not. I don't think this function is avialable in QGIS 2 though.
    – Joseph
    Jul 30, 2019 at 10:18
  • ok ok ,Btw thanks for the help though @Joseph Jul 30, 2019 at 10:23
  • No problem, good luck :)
    – Joseph
    Jul 30, 2019 at 10:25


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.