如何将 html 附加到我的 QWebEngineView

Posted

技术标签:

【中文标题】如何将 html 附加到我的 QWebEngineView【英文标题】:How can I append html to my QWebEngineView 【发布时间】:2018-03-16 19:25:56 【问题描述】:

因此,在 PyQt4 中,您可以执行以下操作将 html 附加到您的页面:

webView.page().mainFrame().documentElement().appendInside(some_html)

我试图在 PyQt5 的 QWebEngineView 中找到类似的功能,但我找不到任何有用的东西。

我的问题是我想在一页上加载许多 html 文件,这需要大约 10 秒(意味着主 GUI 线程在这 10 秒内被阻塞,并且我的应用程序没有响应)。

所以我的解决方案是显示前 5 个,当用户按下按钮时,它会加载下一个 5(使用上述技术),依此类推。

所以我的问题是:QWebEngineView 有这个功能吗,有没有其他方法可以处理QWebEngineView 中的大或多个 html 文件。

【问题讨论】:

一些反馈?? 【参考方案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_())

【讨论】:

以上是关于如何将 html 附加到我的 QWebEngineView的主要内容,如果未能解决你的问题,请参考以下文章

如何快速将 json 附加到我的数组中

如何将 CodenameOne 源附加到我的项目?

如何将 SOAP 标头附加到我的 C# 客户端?

如何将我的域名附加到我的服务器 IP 地址 (Apache)

如何将我的域名附加到我的服务器IP地址(Apache)

如何将 SSD(高级)磁盘附加到我的 NC6 - Microsoft Azure 中的数据科学 VM?