PyQGIS 3.18.2 从符号系统中删除波段名称

问题描述

我最近更新了我的 QGIS,我注意到样式现在显示了带 Band 1(Gray)

enter image description here

enter image description here

问题是它现在显示在我的打印布局中:

enter image description here

使用 PYQGIS,我如何删除 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)

谢谢!

解决方法

这是我在挖掘 StackOverflow 和 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)