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 证书错误