I create rules with this code but it creates one more but without data and when using root_rule.removeChildAt (0)
it deletes a correct one.
layer = iface.activeLayer()
symbol = QgsSymbol.defaultSymbol(layer.geometryType())
renderer = QgsRuleBasedRenderer(symbol)
def rule_based_style(layer, symbol, renderer, label, expression, color):
root_rule = renderer.rootRule()
rule = root_rule.children()[0].clone()
rule.setLabel(label)
rule.setFilterExpression(expression)
rule.symbol().setColor(QColor(color))
# append the rule to the list of rules
root_rule.appendChild(rule)
#delete the default rule[![remove 2 rules][1]][1]
root_rule.removeChildAt(0)
layer.setRenderer(renderer)
layer.triggerRepaint()
iface.layerTreeView().refreshLayerSymbology(layer.id())
#rule_based_style(layer, symbol, renderer, 'Para Campo', ' \"REVISION\" = \'Para Campo\' ', 'yellow')
rule_based_style(layer, symbol, renderer, 'Para Campo', ' \"REVISION\" = \'Para Campo\' ', 'yellow')
rule_based_style(layer, symbol, renderer, 'De Campo NA NULL', ' \"REVISION\" = \'De Campo\' or \"REVISION\" = \'De Campo\' or \"REVISION\" IS NULL ', 'green')