带有交互式SVG图像的pyQt
如何将交互式SVG文件添加到QGraphicsScene?我可以添加一个交互式SVG文件,但它只是显示为静态图像。我正在阅读有关QGraphicsWebView的内容,但无法弄清楚如何向其中添加SVG文件,并且缺少示例。
让我更具体地说明我要寻找的内容。假设我有一个绘制框的SVG文件。当我将鼠标悬停在该框上时,我想更改颜色以触发悬停事件。我是否需要编辑文件并重新绘制图像?感觉应该有一种使用Qt进行交互式SVG文件的方法。
-
我遇到了同样的问题,而您的问题为我指明了正确的方向(使用
QGraphicsWebView()
)。解决方法实际上非常简单:import sys from PyQt4 import QtCore, QtGui, QtSvg from PyQt4.QtWebKit import QGraphicsWebView if __name__ == "__main__": app = QtGui.QApplication(sys.argv) scene = QtGui.QGraphicsScene() view = QtGui.QGraphicsView(scene) br = QtSvg.QGraphicsSvgItem("C:\your_interactive_svg.svg").boundingRect() webview = QGraphicsWebView() webview.load(QtCore.QUrl("C:\your_interactive_svg.svg")) webview.setFlags(QtGui.QGraphicsItem.ItemClipsToShape) webview.setCacheMode(QtGui.QGraphicsItem.NoCache) webview.resize(br.width(), br.height()) scene.addItem(webview) view.resize(br.width()+10, br.height()+10) view.show() sys.exit(app.exec_())
它对我来说很完美(脚本和其他内容)。
如您所见,我也将svg加载为
QGraphicsSvgItem
,因为我不知道其他方法来获取svg的大小。