QWebEngineView 使用 setHtml(...) 加载 SVG 失败
QWebEngineView fails loading SVG using setHtml(...)
我尝试了两种不同的方式在 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,所以这不是一个真正的选择。有谁知道为什么第二种方法对于更复杂的矢量图像如此缓慢或完全失败?
setHtml
函数无法加载任何大于 2MB 的内容(不仅仅是 svg)。这是因为 Chromium 使用 data:
方案 url 来加载内容(这显然将大小限制为 url 的最大长度)。所以似乎唯一的选择是从本地文件加载 svg。
- 参见:QTBUG-53414
我尝试了两种不同的方式在 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,所以这不是一个真正的选择。有谁知道为什么第二种方法对于更复杂的矢量图像如此缓慢或完全失败?
setHtml
函数无法加载任何大于 2MB 的内容(不仅仅是 svg)。这是因为 Chromium 使用 data:
方案 url 来加载内容(这显然将大小限制为 url 的最大长度)。所以似乎唯一的选择是从本地文件加载 svg。
- 参见:QTBUG-53414