QWebEngineView 未使用默认 Windows 海拔加载

Posted

技术标签:

【中文标题】QWebEngineView 未使用默认 Windows 海拔加载【英文标题】:QWebEngineView not loading with default Windows elevation 【发布时间】:2021-07-07 15:51:08 【问题描述】:

我遇到了一个奇怪的问题,这个简单的 QWebEngine 代码作为 Windows 10 上的普通用户运行得非常好(完全加载页面),但是当我提升自己的默认用户帐户时,它会停止加载页面。进度输出将从 0->100 开始,不会在浏览器上调用 loadFinished 或在页面上显示任何输出。我尝试将它作为提升的标准管理员内置帐户运行,它似乎工作起来很奇怪。

这是卸载的页面:

它工作正常:

使用os.environ["QT_DEBUG_PLUGINS"] = "1" 运行不会显示提升和非提升进程之间的任何差异。

import sys

from PyQt5.QtCore import QUrl
from PyQt5.QtWebEngineWidgets import QWebEngineView
from PyQt5.QtWidgets import QApplication, QMainWindow


class MainWindow(QMainWindow):
    def __init__(self, *args, **kwargs):
        super(MainWindow, self).__init__(*args, **kwargs)

        self.browser = QWebEngineView()
        self.browser.setUrl(QUrl('https://www.google.com'))
        self.browser.loadProgress.connect(self.on_load_progress)

        self.setCentralWidget(self.browser)
        self.show()

    def on_load_progress(self, progress: int):
        print(f'loading progress:[progress]...')


app = QApplication(sys.argv)
main_win = MainWindow()

app.exec()

【问题讨论】:

快速更新:在连接到 QWebEngineView.renderProcessTerminated 信号后,我发现渲染进程在页面的 [0] 和 [100] 加载进度之前一直被终止。 【参考方案1】:

在尝试了很多事情并查看了很多日志之后,我发现这个问题的唯一部分解决方案是将 --no-sandbox 添加到 QApplication 参数列表中,以使 Chromium webdriver 完全正常工作。对于我的应用来说,这已经足够了,但在没有沙盒的情况下运行对于更广泛的解决方案来说并不理想。

感谢this 线程(比我的描述有更多相关信息),对于那些感兴趣的人,我找到了答案。

【讨论】:

以上是关于QWebEngineView 未使用默认 Windows 海拔加载的主要内容,如果未能解决你的问题,请参考以下文章

qt.webChannelTransport 在 QWebEngineView 中未定义

如何设置 QWebChannel JS API 以在 QWebEngineView 中使用?

带有 Windows Aero 主题的 QWebEngineView 比例错误

如何使用 QWebEngineView 忽略 SSL 证书错误

无法使用 QWebEngineView.setHtml() 加载 HTML 文件

QWebEngineView使用