Python 如何使用PySide访问和编辑svg节点?
我正在使用PySide将svg图像加载到Qt-gui中。svg由inkscape制成,由层和元素组成(Python 如何使用PySide访问和编辑svg节点?,python,svg,pyside,Python,Svg,Pyside,我正在使用PySide将svg图像加载到Qt-gui中。svg由inkscape制成,由层和元素组成(rect,circle,path,g组…) 这是我正在使用的代码: from PySide import QtSvg
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)
svgWidget = QtSvg.QSvgWidget('file.svg')
svgWidget.show()
sys.exit(app.exec_())
导入后,是否可以访问和编辑/修改特定节点或元素,例如修改路径或更改矩形的颜色?由于SVG是一个XML文件,因此可以使用
QDomDocument
打开它并对其进行编辑
更改第一条路径颜色的示例:
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_())
如果名称=“\uuuuu main\uuuuuuuu”:
doc=QDomDocument(“doc”)
file=QFile(“image.svg”)
如果不是file.open(QIODevice.ReadOnly):
打印(“无法打开文件”)
出口(-1)
如果不是doc.setContent(文件):
打印(“无法解析内容”);
file.close()文件
出口(-1)
file.close()文件
根=doc.elementsByTagName(“svg”)
如果根.size()小于1:
打印(“找不到根”)
出口(-1)
#更改第一条路径的颜色
root=root.at(0).toElement()
path=root.firstChild().toElement()
path.setAttribute(“填充”,“#FF0000”)
app=QApplication(sys.argv)
svgWidget=QtSvg.QSvgWidget()
svgWidget.load(doc.toByteArray())
svgWidget.show()
sys.exit(app.exec_())
谢谢,它工作得很好。现在我“只是”必须学习如何遍历DOM和查找元素,就像我以前使用其他语言一样。