当标签包含表达式时显示错误
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()
希望对大家有所帮助
我有这个函数可以更改多边形的标签(下面的代码),其中“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()
希望对大家有所帮助