Strichbreite eines Polygons PyQGIS ändern

Aug 20 2020

Ich versuche, die Breite der Konturen des Sees auf Null zu setzen oder die Farbe in Hellblau zu ändern, da ich den schwarzen Umriss nicht sehen möchte. Die Vektordatei ist ein Polygon (MultiPolygon) mit dem Namen vlayer2, und ich habe die folgenden Befehle ausprobiert:

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

Aber ich bekomme immer die Nachricht: '' AttributeError: 'QgsVectorLayer' Objekt hat kein Attribut '....' ''

Antworten

1 BenW Aug 21 2020 at 00:21

Die Methoden, die Sie verwenden möchten, gehören zur Klasse QgsSimpleMarkerSymbolLayer . Sie müssen auf die Symbolebene des Renderers Ihrer Vektorebene zugreifen, bevor Sie diese Methoden aufrufen können.

Folgendes sollte für Sie funktionieren, um die Strichfarbe festzulegen, wobei zu berücksichtigen ist, dass Sie ein QColorObjekt an diese Methode übergeben müssen:

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

Alternativ können Sie den Strichstil auf "Kein Stift" setzen. Wenn Sie die Breite auf 0 setzen, erhalten Sie immer noch eine Haaransatzbreite.

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

Ich empfehle dringend , das PyQGIS Developer Cookbook zu lesen, das viele nützliche Beispiele enthält.