所以在PyQt4中你可以做这样的事情来将html追加到你的页面:
webView.page().mainFrame().documentElement().appendInside(some_html)
我试图在PyQt5的QWebEngineView
中找到类似的功能,但我找不到任何有用的东西。
我的问题是我想在一个页面上加载许多html文件,这需要10秒才能完成(意味着主GUI线程在10秒内被阻止,而我的应用程序没有响应)。
所以我的解决方案是先显示5,当用户按下按钮时,它会加载下一个5(使用上述技术),依此类推。
所以我的问题是:QWebEngineView
是否具有此功能,还有其他方法可以处理QWebEngineView
中的大型或多个html文件。
答案 0 :(得分:1)
documentElement()
是一个QWebElement
,根据docs,Qt WebEngine
无法使用。
文档建议使用javascript
替换此类任务,例如以下代码将html添加到QwebEngineView
:
import sys
from PyQt5.QtWidgets import QApplication
from PyQt5.QtWebEngineWidgets import QWebEngineView
from PyQt5.QtCore import QTimer, QDateTime
html = '''
<html>
<header><title>This is title</title></header>
<body>
Hello world
</body>
</html>
'''
def append():
some_html = "<p>{}</p>".format(QDateTime.currentDateTime().toString())
page.runJavaScript("document.body.innerHTML += '{}'".format(some_html))
app = QApplication(sys.argv)
view = QWebEngineView()
timer = QTimer()
timer.timeout.connect(append)
page = view.page()
page.loadFinished.connect(lambda: timer.start(1000))
page.setHtml(html)
view.show()
sys.exit(app.exec_())