В настоящее время так нельзя менять свойства. Они не "пробрасываются" по цепочке в обратную сторону. Т.е. вы работаете с копией объекта. Изменение его свойств не поменяет свойства родительского объекта.
Мы поменяем это поведение в следующей версии - сейчас активно тестируем.
Code: Select all
from PySide2.QtGui import QColor
import axipy
def get_text_style_from_effects(effects: axipy.TextStyleEffects, bg_type: axipy.TextBackgroundType) -> int:
"""
Получить дополнительные параметры стиля из эффектов
:param effects: Эффекты применяемые к текстовому объекту
:param bg_type: Тип отрисовки фона текста
:return: Дополнительные параметры стиля текстового объекта
"""
style = (
int(effects.bold) +
int(effects.italic) * 2 +
int(effects.underline) * 4 +
int(effects.shadow) * 32 +
int(effects.capital) * 512 +
int(effects.spacing) * 1024
)
if bg_type == axipy.TextBackgroundType.Frame:
style += 16
elif bg_type == axipy.TextBackgroundType.Outline:
style += 256
return style
flag = False
# Меняем цвет выделенных Текстовых объектов на красный
if axipy.data_manager.selection:
for feature in axipy.data_manager.selection:
if isinstance(feature.geometry, axipy.Text):
style = feature.style
style = axipy.TextStyle(style.fontname, 0, get_text_style_from_effects(style.effects, style.bg_type), QColor.fromRgb(255,0,0), style.bg_color)
feature.style = style
axipy.data_manager.selection.update(feature)
flag = True
if not flag:
print("Нет выделенных текстовых объектов")