QGIS中如何快速查看统计选中图层数量(两种方法)
发布时间: 2025-08-28
所属分类: QGIS学习笔记
在使用 QGIS 处理大量图层时,经常需要同时选中多个图层进行操作。但图层一多,就很难快速看出到底选中了多少个——别慌,用 PyQGIS 写个小工具就能轻松解决!
今天小编给大家分享两种实时显示选中图层数量的方法,操作简单、代码清晰,有需要的可以尝试。
方案一:实时显示选中图层总数
这是目前社区里最受欢迎的做法,适合快速查看选中图层的总数。具体的代码实现方法如下:
from qgis.PyQt.QtWidgets import QLabel
label = QLabel("Selected Layers Count:")
count = QLabel()
tree_view = iface.layerTreeView()
c = len(tree_view.selectedLayers())
count.setText(str(c))
tb = iface.addToolBar("Selected layers")
tb.addWidget(label)
tb.addWidget(count)
def show_selected_layers_count():
c = len(tree_view.selectedLayers())
count.setText(str(c))
tree_view.selectionModel().selectionChanged.connect(show_selected_layers_count)
直接在QGIS中运行上述代码,效果如图:
实现原理:
- 通过 iface.layerTreeView()获取图层树;
- 初始计算选中数量并显示;
- 借助 selectionChanged信号实现实时更新。
方案二:按图层组统计选中数量
上述的方案简单快捷,但有一个小问题就是不支持图层组,这是一个增强版方案。
代码如下:
from qgis.PyQt.QtWidgets import QLabel
from qgis.core import QgsProject
p = QgsProject.instance()
root = p.layerTreeRoot()
view = iface.layerTreeView()
tb = iface.addToolBar("Selected layers")
def show_selected_layers_count():
tb.clear()
tb.addWidget(QLabel('Selected layers per group: '))
for child in root.children():
if root.isGroup(child):
label = QLabel(f'{child.name()}: ')
selected_layers = []
for selectedLayer in view.selectedNodes():
if selectedLayer.parent() == child:
selected_layers.append(selectedLayer)
count = len(selected_layers)
count_label = QLabel(str(count) + ' ')
tb.addWidget(label)
tb.addWidget(count_label)
con = view.selectionModel().selectionChanged.connect(show_selected_layers_count)
# 如需断开连接可使用:
# view.selectionModel().selectionChanged.disconnect(con)
运行结果如下:
总结
最后,小编建议大家将脚本保存为.py
文件并放入 QGIS 的启动脚本目录(例如 ~/.qgis3/python),这样即可实现每次启动 QGIS 时自动加载;若想进一步扩展功能,可对方法二进行优化,例如增加对递归子组的统计支持或自定义显示样式;此外,还可以尝试为标签添加背景色、边框等样式调整,让界面显示更加直观美观。
全部QGIS笔记
本站所有的QGIS学习笔记-->QGIS 学习笔记汇总
相关阅读
声明
1.本文所分享的所有需要用户下载使用的内容(包括但不限于软件、数据、图片)来自于网络或者麻辣GIS粉丝自行分享,版权归该下载资源的合法拥有者所有,如有侵权请第一时间联系本站删除。
2.下载内容仅限个人学习使用,请切勿用作商用等其他用途,否则后果自负。
手机阅读
公众号关注
知识星球
手机阅读

最新GIS干货

私享圈子
上一篇:QGIS查找栅格影像最大像元
没有下文