使用psd-tools修改PSD文本层报错:TypeLayer的text无setter属性
解决psd-tools修改PSD文本层时的AttributeError问题
报错原因
AttributeError: property 'text' of 'TypeLayer' object has no setter 这个错误的核心原因是:psd-tools库中TypeLayer类的text属性是只读属性,仅提供文本读取的方法(getter),没有开放直接赋值的接口(setter),所以直接通过number_layer.text = "Smth"赋值会触发该错误。
正确修改文本层内容的方法
要修改PSD文本层的内容,需要通过TypeLayer的engine_dict对象来操作,完整步骤如下:
- 定位目标文本层
- 使用
engine_dict.set_text()方法设置新文本 - 保存修改后的PSD文件
修改后的完整代码:
from psd_tools import PSDImage psd = PSDImage.load("raw.psd") # 定位目标文本层,用next替代list(filter)更高效 number_layer = next(layer for layer in psd.descendants() if layer.name == "some cool layer") # 查看原文本(可选操作) print(number_layer.text) # 修改文本内容 number_layer.engine_dict.set_text("Smth") # 保存修改后的文件 psd.save("modified.psd")
内容的提问来源于stack exchange,提问作者sa1lormoon
相关产品推荐
相关产品推荐

