首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用PySide访问和编辑svg节点?

如何使用PySide访问和编辑svg节点?
EN

Stack Overflow用户
提问于 2019-04-02 15:18:11
回答 1查看 472关注 0票数 1

我使用PySidesvg映像加载到Qt中。svg由inkscape组成,由层和元素(rectcirclepathg组.)组成。

这是我正在使用的代码:

代码语言:javascript
复制
from PySide import QtSvg                                                                                                                                                                                                                                                             
from PySide.QtCore import QLocale                                                                                                                                                                                                                                                    
from PySide.QtGui import *                                                                                                                                                                                                                                                           

if __name__ == "__main__":                                                                                                                                                                                                                                                           
    import sys                                                                                                                                                                                                                                                                       

    app = QApplication(sys.argv)                                                                                                                                                                                                                                                     
    svgWidget = QtSvg.QSvgWidget('file.svg')                                                                                                                                                                                                                             
    svgWidget.show()                                                                                                                                                                                                                                                                 

    sys.exit(app.exec_())       

导入后,是否可以访问和编辑/修改特定的节点或元素,例如修改路径或更改矩形的颜色?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-02 15:45:57

因为SVG是一个XML文件,所以您可以使用QDomDocument打开它并编辑它。

更改第一条路径的颜色的示例:

代码语言:javascript
复制
if __name__ == "__main__":
    doc = QDomDocument("doc")

    file = QFile("image.svg")
    if not file.open(QIODevice.ReadOnly):
        print("Cannot open the file")
        exit(-1)

    if not doc.setContent(file):
        print("Cannot parse the content");
        file.close()
        exit(-1)
    file.close()

    roots = doc.elementsByTagName("svg")
    if roots.size() < 1:
       print("Cannot find root")
       exit(-1)

    # Change the color of the first path
    root = roots.at(0).toElement()
    path = root.firstChild().toElement()
    path.setAttribute("fill", "#FF0000")

    app = QApplication(sys.argv)                                                                                                                                                                                                                                                     
    svgWidget = QtSvg.QSvgWidget()
    svgWidget.load(doc.toByteArray())
    svgWidget.show()                                                                                                                                                                                                                                                                 

    sys.exit(app.exec_()) 
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55478228

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档