Как скрыть / показать QGisVectorLayer из кода Python?


11

Как только я создал слой, как я могу его скрыть / показать? Я могу включить / отключить рендеринг определенного слоя, установив флажок через QGIS, но мне нужно сделать это программно из кода Python.

Как я могу показать / скрыть (не удалить) метку из кода Python?

Я ищу что-то вроде:

aLayer = self.addVectorLayer(uri.uri(), layerName, self.dbConn.getProviderName())
aLayer.Hide()
....
aLayer.Show()

Я рад, что вы изменили имя переменной vl(из аналогичного примера кода в предыдущем вопросе) на aLayer. Легко спутать строчную букву lс цифрой 1.
andytilia

@andytilia: ты прав. Я также редактировал старые вопросы.
Heisenbug

Ответы:


8

Вы можете управлять видимостью слоя через объект легенды. Вот ваш пример кода выше:

aLayer = self.addVectorLayer(uri.uri(), layerName, self.dbConn.getProviderName())
legend = self.legendInterface()  # access the legend
legend.setLayerVisible(aLayer, False)  # hide the layer
# do something else
legend.setLayerVisible(aLayer, True)  # show the layer

# maybe later I want to check if the layer is visible
print legend.isLayerVisible(aLayer)

Вот документация для legendInterface: http://qgis.org/api/classQgsLegendInterface.html

Удачи!

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.