如何从Python代码隐藏/显示QGisVectorLayer?


11

创建图层后,如何隐藏/显示它?我可以通过选择QGIS中的复选框来启用/禁用特定图层的渲染,但是我需要通过python代码以编程方式进行。

如何显示/隐藏(不删除)Python代码中的标签?

我正在寻找类似的东西:

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

我很高兴您将变量名vl(从前面的问题中的类似代码示例)更改为aLayer。将小写字母l与digit 混淆很容易1
andytilia

@andytilia:你是对的。我也编辑了旧问题。
Heisenbug 2012年

Answers:


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)

这是以下文档legendInterfacehttp : //qgis.org/api/classQgsLegendInterface.html

祝好运!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.