ポリゴンPyQGISのストローク幅を変更する

Aug 20 2020

黒い輪郭を見たくないので、湖の輪郭の幅をゼロに設定するか、色を水色に変更しようとしています。ベクターファイルはvlayer2という名前のポリゴン(MultiPolygon)であり、次のコマンドを試しました。

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()

多くの有用な例が含まれているPyQGISDeveloperCookbookをチェックすることを強くお勧めします。