当标签包含表达式时显示错误

Display bug when label contain a expression

我有这个函数可以更改多边形的标签(下面的代码),其中“nom_com”和“statutpro”是图层中的字段。

def ETIQUETAGE(self):
    layer = self.COUCHE_DEPARTEMENT_SELECTIONNEE() #return a vector layer
    deco = QgsPalLayerSettings()
    deco.enabled = True
    isExpression = True
    if self.ChoixEtiquetage.currentText() == "COMMUNE":
        deco.fieldName = '\'nom :\' +"nom_com"'
    if self.ChoixEtiquetage.currentText() == "COMMUNE ET STATUT PROSPECTION":
        deco.fieldName = '"nom_com" + \'\n\' +"statutpro"' 
    labeler = QgsVectorLayerSimpleLabeling(deco)
    layer.setLabeling(labeler)
    layer.setLabelsEnabled(True)
    layer.triggerRepaint()

当我运行一切正常(我没有任何错误)时,问题出在显示器上。该函数更改属性 window 中的标签特征,但在我按下属性 window.

之前没有显示

当我只输入一个参数时,显示效果很好。例如

deco.fieldName = "nom_com"

当它是表达式时是否有特定的语法?

我刚刚看到我的错误在哪里,这是一个语法错误。 如果标签是基于表达式的,我们必须把

deco.isExpression

让插件在 canvas

中显示一些内容
def ETIQUETAGE(self):
layer = self.COUCHE_DEPARTEMENT_SELECTIONNEE() #return a vector layer
deco = QgsPalLayerSettings()
deco.enabled = True
deco.isExpression = True
if self.ChoixEtiquetage.currentText() == "COMMUNE":
    deco.fieldName = "concat('nom : ', nom_com)"
if self.ChoixEtiquetage.currentText() == "COMMUNE ET STATUT PROSPECTION":
    deco.fieldName = "concat('nom : ', nom_com, '\n', 'Statut prospection : ', statutpro)"' 
labeler = QgsVectorLayerSimpleLabeling(deco)
layer.setLabeling(labeler)
layer.setLabelsEnabled(True)
layer.triggerRepaint()

希望对大家有所帮助