เปลี่ยนความกว้างของเส้นขีดของรูปหลายเหลี่ยม PyQGIS

Aug 20 2020

ฉันพยายามตั้งค่าความกว้างของรูปทรงทะเลสาบเป็นศูนย์หรือเปลี่ยนสีเป็นสีฟ้าอ่อนเนื่องจากฉันไม่ต้องการเห็นโครงร่างสีดำ ไฟล์เวกเตอร์เป็นรูปหลายเหลี่ยม (MultiPolygon) ชื่อ vlayer2 และฉันได้ลองใช้คำสั่งต่อไปนี้:

vlayer2.setStrokeWidth(0)
vlayer2.setStrokeColor([49,179,245])
vlayer2.setWidth(0)

แต่ฉันมักจะได้รับข้อความ: วัตถุ '' AttributeError: 'QgsVectorLayer' ไม่มีแอตทริบิวต์ '.... ' ''

คำตอบ

1 BenW Aug 21 2020 at 00:21

วิธีการที่คุณพยายามใช้เป็นของคลาสQgsSimpleMarkerSymbolLayer คุณต้องเข้าถึงเลเยอร์สัญลักษณ์ของตัวแสดงผลของเลเยอร์เวกเตอร์ก่อนจึงจะเรียกใช้เมธอดเหล่านี้

สิ่งต่อไปนี้ควรใช้สำหรับคุณในการกำหนดสีเส้นโครงร่างโดยจำไว้ว่าคุณต้องส่งQColorวัตถุไปที่วิธีนี้:

vlayer2.renderer().symbol().symbolLayer(0).setStrokeColor(QColor(49, 179, 245))
vlayer2.triggerRepaint()

หรือคุณสามารถตั้งค่ารูปแบบเส้นขีดเป็น 'ไม่มีปากกา' การตั้งค่าความกว้างเป็น 0 จะยังคงให้ความกว้าง 'เส้นขน'

vlayer2.renderer().symbol().symbolLayer(0).setStrokeStyle(Qt.PenStyle.NoPen)
vlayer2.triggerRepaint()

ฉันแนะนำให้ตรวจสอบPyQGIS Developer Cookbookซึ่งมีตัวอย่างที่เป็นประโยชน์มากมาย