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

我正在使用PySide将svg图像加载到 Qt gui 中。使用inkscape 制作的svg 由图层和元素(rect、circle、path、g组...)组成。


这是我正在使用的代码:


from PySide import QtSvg                                                                                                                                                                                                                                                             

from PySide.QtCore import QLocale                                                                                                                                                                                                                                                    

from PySide.QtGui import *                                                                                                                                                                                                                                                           


if __name__ == "__main__":                                                                                                                                                                                                                                                           

    import sys                                                                                                                                                                                                                                                                       


    app = QApplication(sys.argv)                                                                                                                                                                                                                                                     

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


慕婉清6462132
浏览 664回答 1
1回答

噜噜哒

由于 SVG 是一个 XML 文件,您可以打开它QDomDocument并对其进行编辑。更改第一条路径颜色的示例:if __name__ == "__main__":&nbsp; &nbsp; doc = QDomDocument("doc")&nbsp; &nbsp; file = QFile("image.svg")&nbsp; &nbsp; if not file.open(QIODevice.ReadOnly):&nbsp; &nbsp; &nbsp; &nbsp; print("Cannot open the file")&nbsp; &nbsp; &nbsp; &nbsp; exit(-1)&nbsp; &nbsp; if not doc.setContent(file):&nbsp; &nbsp; &nbsp; &nbsp; print("Cannot parse the content");&nbsp; &nbsp; &nbsp; &nbsp; file.close()&nbsp; &nbsp; &nbsp; &nbsp; exit(-1)&nbsp; &nbsp; file.close()&nbsp; &nbsp; roots = doc.elementsByTagName("svg")&nbsp; &nbsp; if roots.size() < 1:&nbsp; &nbsp; &nbsp; &nbsp;print("Cannot find root")&nbsp; &nbsp; &nbsp; &nbsp;exit(-1)&nbsp; &nbsp; # Change the color of the first path&nbsp; &nbsp; root = roots.at(0).toElement()&nbsp; &nbsp; path = root.firstChild().toElement()&nbsp; &nbsp; path.setAttribute("fill", "#FF0000")&nbsp; &nbsp; app = QApplication(sys.argv)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; svgWidget = QtSvg.QSvgWidget()&nbsp; &nbsp; svgWidget.load(doc.toByteArray())&nbsp; &nbsp; svgWidget.show()&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; sys.exit(app.exec_())&nbsp;
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python