PyQGIS 3.18.2 从符号系统中删除波段名称
PyQGIS 3.18.2 Removing Band Name from Symbology
我最近更新了我的 QGIS,我注意到样式现在显示了波段 Band 1(Gray)
问题是它现在显示在我的打印布局中:
使用 PYQGIS,如何删除 just 和 Band 1 (Gray)
?
供参考,这是我目前在布局中设置图例的方式:
def set_legend(layout: QgsPrintLayout, tree: QgsLayerTree, layer: QgsLayer, item_id: str):
'''Sets the Legend items'''
logging.info(f'setting legend: {item_id}')
item = layout.itemById(item_id)
# set layer as root for legend
tree.addLayer(layer)
item.model().setRootGroup(tree)
node = item.model().rootGroup().findLayer(layer)
# hide the node title
QgsLegendRenderer.setNodeLegendStyle(node, QgsLegendStyle.Hidden)
谢谢!
这是我在研究 Whosebug 和 API 后的解决方案:
root = model.rootGroup().findLayer(layer)
# hide the node with label: Band 1 (Gray)
if isinstance(layer, QgsRasterLayer):
nodes = model.layerLegendNodes(root)
if nodes[0].data(0) == 'Band 1 (Gray)':
indexes = list(range(1, len(nodes)))
QgsMapLayerLegendUtils.setLegendNodeOrder(root, indexes)
model.refreshLayerLegend(root)
我最近更新了我的 QGIS,我注意到样式现在显示了波段 Band 1(Gray)
问题是它现在显示在我的打印布局中:
使用 PYQGIS,如何删除 just 和 Band 1 (Gray)
?
供参考,这是我目前在布局中设置图例的方式:
def set_legend(layout: QgsPrintLayout, tree: QgsLayerTree, layer: QgsLayer, item_id: str):
'''Sets the Legend items'''
logging.info(f'setting legend: {item_id}')
item = layout.itemById(item_id)
# set layer as root for legend
tree.addLayer(layer)
item.model().setRootGroup(tree)
node = item.model().rootGroup().findLayer(layer)
# hide the node title
QgsLegendRenderer.setNodeLegendStyle(node, QgsLegendStyle.Hidden)
谢谢!
这是我在研究 Whosebug 和 API 后的解决方案:
root = model.rootGroup().findLayer(layer)
# hide the node with label: Band 1 (Gray)
if isinstance(layer, QgsRasterLayer):
nodes = model.layerLegendNodes(root)
if nodes[0].data(0) == 'Band 1 (Gray)':
indexes = list(range(1, len(nodes)))
QgsMapLayerLegendUtils.setLegendNodeOrder(root, indexes)
model.refreshLayerLegend(root)