Câu hỏi PyQgis: Làm thế nào để thay đổi hoặc thiết lập lớp hoạt động?


9

Phát triển plugin QGIS, tôi thấy rằng nếu không có lớp nào được chọn trong bảng điều khiển Lớp, tôi có thể lặp lại tất cả các lớp và làm bất cứ điều gì với chúng, nhưng "kích hoạt" chúng.

Ai đó có thể cho tôi một gợi ý xin vui lòng?

Câu trả lời:


18

Bạn có thể đặt lớp hoạt động bằng cách sử dụng đối tượng qgis.utils.iface (tức là QgisInterface ):

qgis.utils.iface.setActiveLayer(QgsMapLayer)  # returns bool
# or
qgis.utils.iface.legendInterface().setCurrentLayer(QgsMapLayer)  # returns bool

Xóa lựa chọn hoặc lớp hoạt động (mục QTreeWidget được gạch chân trong QGIS 2.0), trong phần chú thích có liên quan nhiều hơn một chút:

from PyQt4.QtCore import *
from PyQt4.QtGui import *
lg = qgis.utils.iface.mainWindow().findChild(QTreeWidget, 'theMapLegend')
lg.selectionModel().clear()  # clear just selection
lg.setCurrentItem(None)  # clear selection and active layer

Có ba cách để truy xuất các lớp hiện tại, liên quan đến những gì bạn có thể muốn làm:

~ thông qua QList <QssMapLayer *> QssLegendInterface :: layer ()

qgis.utils.iface.legendInterface().layers()  # returns [layer, ...]

~ thông qua QList <QssMapLayer *> QssMapCanvas :: layer () :

qgis.utils.iface.mapCanvas().layers()  # returns [layer, ...]

~ thông qua const QMap <QString, QssMapLayer *> & QssMapLayerRegistry :: mapLayers () :

QgsMapLayerRegistry.instance().mapLayers()  # returns {'layer_id': layer, ...}

Tham khảo các câu trả lời này để biết thông tin về sự khác biệt trong các bộ sưu tập lớp.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.