Bagaimana cara menyembunyikan / menampilkan QGisVectorLayer dari kode Python?

11

Setelah membuat layer, bagaimana saya bisa menyembunyikan / menampilkannya? Saya dapat mengaktifkan / menonaktifkan rendering lapisan tertentu dengan memilih kotak centang melalui QGIS, tetapi saya harus melakukannya secara terprogram dari kode python.

Bagaimana saya bisa menampilkan / menyembunyikan (tidak menghapus) label dari kode python?

Saya mencari sesuatu seperti:

aLayer = self.addVectorLayer(uri.uri(), layerName, self.dbConn.getProviderName())
aLayer.Hide()
....
aLayer.Show()
Heisenbug
sumber
Saya senang Anda mengubah nama variabel vl(dari contoh kode serupa di pertanyaan sebelumnya) menjadi aLayer. Sangat mudah untuk membingungkan huruf kecil ldengan digit 1.
andytilia
@andytilia: Anda benar. Saya mengedit pertanyaan lama juga.
Heisenbug

Jawaban:

8

Anda dapat mengontrol visibilitas lapisan melalui objek legenda. Ini dia, menggunakan kode contoh Anda di atas:

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)

Berikut dokumentasi untuk legendInterface: http://qgis.org/api/classQgsLegendInterface.html

Semoga berhasil!

andytilia
sumber