【问题标题】:QWebEngineView fails loading SVG using setHtml(...)QWebEngineView 使用 setHtml(...) 加载 SVG 失败
【发布时间】:2017-01-04 04:59:04
【问题描述】:

我尝试了两种不同的方式在 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,所以这不是一个真正的选择。有谁知道为什么第二种方法对于更复杂的矢量图像如此缓慢或完全失败?

【问题讨论】:

  • 你为什么不用QSvgWidget
  • 因为我使用 Javascript 进行一些 SVG 交互。

标签: python qt svg pyqt5 qtwebengine


【解决方案1】:

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

【讨论】:

  • 这很不幸,但好吧......谢谢你的解释。
猜你喜欢
  • 1970-01-01
  • 2023-02-09
  • 2022-11-05
  • 1970-01-01
  • 1970-01-01
  • 2017-01-16
  • 2013-11-16
  • 2011-06-19
  • 2012-03-01
相关资源
最近更新 更多