Як приховати / показати QGisVectorLayer від коду Python?


11

Як тільки я створив шар, як його приховати / показати? Я можу ввімкнути / вимкнути візуалізацію певного шару, вибравши прапорець через QGIS, але мені потрібно це зробити програмно з коду python.

Як я можу показати / приховати (не видалити) мітку з коду python?

Я шукаю щось на зразок:

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

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

@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.