Làm cách nào để ẩn / hiển thị QGisVectorLayer khỏi mã Python?


11

Sau khi tạo một lớp, làm thế nào tôi có thể ẩn / hiển thị nó? Tôi có thể bật / tắt hiển thị một lớp cụ thể bằng cách chọn hộp kiểm thông qua QGIS, nhưng tôi cần phải lập trình từ mã python.

Làm cách nào tôi có thể hiển thị / ẩn (không xóa) nhãn khỏi mã python?

Tôi đang tìm kiếm một cái gì đó như:

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

Tôi rất vui vì bạn đã thay đổi tên biến vl(từ mẫu mã tương tự trong câu hỏi trước đó) thành aLayer. Thật dễ dàng nhầm lẫn chữ cái viết thường lvới chữ số 1.
andytilia

@andytilia: bạn nói đúng. Tôi cũng chỉnh sửa những câu hỏi cũ.
Heisenorms

Câu trả lời:


8

Bạn có thể kiểm soát mức độ hiển thị của lớp thông qua đối tượng huyền thoại. Đây là, sử dụng mã mẫu của bạn ở trên:

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)

Đây là tài liệu cho legendInterface: http://qgis.org/api/ classQgsLegendInterface.html

Chúc may mắn!

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.