pyQGIS中为字符串添加下划线的实现方法咨询
QGIS Python 生成地图时实现文本下划线的方法
方法1:局部文本标注加下划线(仅部分字符需要下划线时使用)
QGIS的标注系统支持简易HTML格式化语法,你直接在需要加下划线的字符串外包裹<u>标签即可,示例:
如果你要给字段name的取值加下划线,标注表达式写为:'<u>' || "name" || '</u>'
直接在Python里构造标注文本也可以用同样的拼接逻辑。方法2:整层标注全局加下划线(所有标注文本都需要下划线时使用)
直接通过PyQGIS的QgsTextFormat类配置下划线属性后应用到图层标注设置即可,参考代码如下:
from qgis.core import (QgsPalLayerSettings, QgsTextFormat, QgsVectorLayerSimpleLabeling, QColor) # 获取目标矢量图层,这里以当前激活图层为例,你可以替换为自己加载的图层对象 layer = iface.activeLayer() # 初始化标注配置 pal_settings = QgsPalLayerSettings() text_format = QgsTextFormat() # 开启下划线效果,可自定义下划线样式 text_format.setUnderline(True) # 可选配置:自定义下划线颜色、宽度 # text_format.setUnderlineColor(QColor(0,0,0)) # 黑色下划线 # text_format.setUnderlineWidth(0.3) # 下划线宽度设为0.3mm # 应用文本格式到标注配置 pal_settings.setFormat(text_format) # 配置标注来源字段,也可传入表达式 pal_settings.fieldName = "name" # 把标注配置应用到图层 layer.setLabeling(QgsVectorLayerSimpleLabeling(pal_settings)) # 开启图层标注 layer.setLabelsEnabled(True) # 刷新画布显示效果 layer.triggerRepaint()
两种方法都可以实现你需要的标注下划线效果,你可以根据自己的需求选择对应方案。
内容的提问来源于stack exchange,提问作者andymt
相关产品推荐
相关产品推荐

