วิธีซ่อน / แสดง QGisVectorLayer จากรหัส Python


11

เมื่อสร้างเลเยอร์แล้วฉันจะซ่อน / แสดงมันได้อย่างไร? ฉันสามารถเปิด / ปิดการแสดงผลเลเยอร์เฉพาะโดยเลือกช่องทำเครื่องหมายผ่าน QGIS แต่ฉันต้องทำโดยทางโปรแกรมจากรหัสหลาม

ฉันจะแสดง / ซ่อน (ไม่ลบ) ฉลากจากรหัสหลามได้อย่างไร

ฉันกำลังมองหาสิ่งที่ชอบ:

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

ฉันดีใจที่คุณเปลี่ยนชื่อตัวแปรvl(จากตัวอย่างโค้ดที่คล้ายกันในคำถามก่อนหน้า) aLayerเพื่อ มันง่ายที่จะสร้างความสับสนให้ตัวอักษรตัวพิมพ์เล็กกับหลักl 1
andytilia

@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

โชคดี!

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.