Skip to main content
 首页 » 编程设计

python之QWebEngineView 使用 setHtml(...) 加载 SVG 失败

2024年10月17日47jiqing9006

我尝试了两种不同的方式在 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。