QWebEngineView无法使用setHtml(...)加载SVG

时间:2016-08-27 18:50:03

标签: python qt svg pyqt5 qtwebengine

我尝试了两种不同的方法来加载和显示PyQt中的SVG文件:

import sys
from PyQt5.QtWebEngineWidgets import QWebEngineView
from PyQt5.QtWidgets import QApplication
from PyQt5.QtCore import QUrl

app = QApplication(sys.argv)
webView = QWebEngineView()

# Variant 1: Reasonably fast
webView.load(QUrl('file:///Test.svg'))

# Variant 2: Slow for small files, not working for big ones
webView.setHtml('<svg>........')

webView.show()
sys.exit(app.exec_())

第一种方法可行,但需要一个文件作为输入。我想动态生成SVG,所以这不是一个真正的选择。有没有人知道为什么第二种方法对于更复杂的矢量图像来说是如此缓慢或完全失败?

1 个答案:

答案 0 :(得分:1)

setHtml函数无法加载任何大小超过2MB的内容(不仅仅是svg)。这是因为Chromium使用data:方案网址加载内容(显然将大小限制为网址的最大长度)。因此,似乎唯一的选择是从本地文件加载svg。