PythonコードからQGisVectorLayerを非表示/表示する方法は?


11

レイヤーを作成したら、どのように非表示/表示できますか?QGISでチェックボックスを選択することにより、特定のレイヤーのレンダリングを有効/無効にすることができますが、Pythonコードからプログラムで行う必要があります。

Pythonコードからラベルを表示/非表示(削除しない)にするにはどうすればよいですか?

私は次のようなものを探しています:

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

変数名をvl(前の質問の同様のコードサンプルから)に変更してくれてうれしいですaLayer。小文字lと数字を混同するのは簡単1です。
アンディティリア

@andytilia:そのとおりです。古い質問も編集しました。
ハイゼンバグ

回答:


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)

http://qgis.org/api/classQgsLegendInterface.htmlのドキュメントはlegendInterface次のとおりです。

幸運を!

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.