def setLabel(self, stateLayer, isInternational): ''' Sets label rules for layer in localization component ''' # Getting base rule root = QgsRuleBasedLabeling.Rule(QgsPalLayerSettings()) # Creating Rule settings = QgsPalLayerSettings() if isInternational: settings.fieldName = 'concat(upper("nome"), \' - \', upper("SIGLA_PAIS"))' else: settings.fieldName = 'upper("nome")' settings.placement = QgsPalLayerSettings.Horizontal settings.centroidInside = True settings.isExpression = True textFormat = QgsTextFormat() textFormat.setColor(QColor(0, 0, 0, 255)) textFormat.setSize(6) settings.setFormat(textFormat) # Add rule to root and apply to stateLayer rule = QgsRuleBasedLabeling.Rule(settings) rule.setActive(True) root.appendChild(rule) rules = QgsRuleBasedLabeling(root) stateLayer.setLabeling(rules) stateLayer.setLabelsEnabled(True) stateLayer.triggerRepaint()
def createRules(self, label, expression): ''' Returns a QgsRuleBasedLabeling based on label and expression ''' settings = QgsPalLayerSettings() settings.fieldName = label settings.Placement = QgsPalLayerSettings.OverPoint settings.centroidInside = True settings.isExpression = True textFormat = QgsTextFormat() textFormat.setColor(QColor(0, 0, 0, 255)) textFormat.setSize(6) textBuffer = QgsTextBufferSettings() textBuffer.setColor(QColor(255, 255, 255, 255)) textBuffer.setSize(0.4) textBuffer.setEnabled(True) textFormat.setBuffer(textBuffer) settings.setFormat(textFormat) rule = QgsRuleBasedLabeling.Rule(settings) rule.setFilterExpression(expression) rule.setActive(True) return rule