Изменение ширины обводки многоугольника 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, которое содержит множество полезных примеров.