2016-08-27 49 views
1

我嘗試了兩種不同的方式PyQt的加載和顯示SVG文件加載SVG:QWebEngineView失敗使用setHtml(...)

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,所以這不是一個真正的選擇。有沒有人有一個想法,爲什麼第二種方法對於更復雜的矢量圖像太慢或完全失敗?

+0

你爲什麼不使用[QSvgWidget(http://doc.qt.io/qt-5/qsvgwidget.html)? – ekhumoro

+0

因爲我使用JavaScript進行一些SVG交互。 – sonovice

回答

1

setHtml函數無法加載任何大於2MB大小的內容(不僅僅是svg)。這是因爲Chromium使用data:計劃網址來加載內容(這明顯會將網址的大小限制爲網址的最大長度)。所以看起來唯一的選擇是從本地文件加載svg。

+0

那很不幸,但是......感謝您的解釋。 – sonovice