问题描述
使用PyQt5.QtWebEngineWidgets
,当使用一堆诸如MathJax之类的JavaScript渲染网站时,我发现有关QWebEngineView / QWebEnginePage性能的奇怪效果。
- 创建
QWebEngineView
并使用其load
:
from PyQt5 import QtCore,QtWidgets
from PyQt5.QtWebEngineWidgets import QWebEngineView,QWebEnginePage
app = QtWidgets.QApplication.instance() or QtWidgets.QApplication([])
url = "https://www.tuhh.de/MathJax/test/sample.html"
view = QWebEngineView()
view.load(QtCore.QUrl("about:blank"))
view.show()
def test():
view.load(QtCore.QUrl(url))
QtCore.QTimer.singleShot(1,test) # set after view.show is done
app.exec_()
这是应该的,它又快又好。
- 创建视图,而不是分别创建
QWebEnginePage
并通过setPage
将其设置为视图:
from PyQt5 import QtCore,QWebEnginePage
app = QtWidgets.QApplication.instance() or QtWidgets.QApplication([])
url = "https://www.tuhh.de/MathJax/test/sample.html"
view = QWebEngineView()
view.load(QtCore.QUrl("about:blank"))
view.show()
page = None
def test():
global page
page = QWebEnginePage(view)
page.load(QtCore.QUrl(url))
view.setPage(page)
QtCore.QTimer.singleShot(1,test) # set after view.show is done
app.exec_()
在我的PC上,第二个方法大约需要20到30秒才能完成MathJax渲染,在此过程中,您可以在左下角看到“正在处理数学”或“排版数学”。
有趣的是,这种情况仅在我开始使用Pyqt5.12或PyQt5.13时才出现,但PyQt5.9(win64)并非如此。
有人可以复制吗?
有人能弄明白为什么它变得这么慢吗?
我问的原因是因为在模块中,我将QWebEnginePage
子类化为使用printToPdf
将HTML转换为PDF,在等待javascript转换时,其性能下降完全相同。在打印之前完成。每当我自己而不是通过视图隐式生成并使用页面实例时,情况似乎都是这样。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)