PySide6 中的 QWebEngineView 未加载任何页面

QWebEngineView in PySide6 not loading any page

提问人:user22495 提问时间:10/22/2023 最后编辑:user22495 更新时间:10/27/2023 访问量:163

问:

QWebEngineView显示一个空窗口,无论我尝试什么。

这简明扼要地说明了这个问题:

import sys
from PySide6.QtWidgets import QApplication
from PySide6.QtWebEngineWidgets import QWebEngineView
from PySide6.QtCore import QUrl
app = QApplication(sys.argv)
view = QWebEngineView()
def test1(percent):
    print(percent)
view.loadProgress.connect(test1)
def test2(success):
    print(success)
view.loadFinished.connect(test2)
view.setUrl(QUrl("https://www.google.com"))
view.show()
sys.exit(app.exec())

输出显示加载从 0% 进行到 100%,但失败:

doh set to ""  --  SystemOnly
0
100
False

本地 HTML 文件和 HTML 字符串也会发生同样的情况。 系统: Windows 10;Python 3.11.6 通过 Microsoft Store;PySide 6.6.0 和一些稍早的版本。这似乎是 PyQt5 而不是 Pyside6 的类似问题。解决方案“--no-sandbox”似乎对我不起作用。

附录 1:添加以下内容:

def test3(status, code):
    print(status, code, hex(code))
view.renderProcessTerminated.connect(test3)

此输出的结果:

doh set to ""  --  SystemOnly
0
RenderProcessTerminationStatus.CrashedTerminationStatus -1073741515 -0x3ffffecb
RenderProcessTerminationStatus.CrashedTerminationStatus -1073741515 -0x3ffffecb
100
False

附录2:好的,这意味着找不到.dll文件。实际上,我之前尝试添加Qt6Web的位置.....dll文件复制到PATH,但无济于事。我甚至试图将它们的副本放在 .py 文件旁边。

附录3:如果我可以信任老旧的Dependency Walker,Qt6WebEngineWidgets,.dll需要几十个DLL,如api-ms-win-core-url-l1-1-0.dll,这些DLL是找不到的(Dependency Walker说)。但是,实际上,Windows文件夹中有几个副本。

pyside6 qwebengine视图

评论

0赞 musicamante 10/22/2023
可能与 QTBUG-91773(及其链接的错误)有关。某些基础内容(iframe、js 加载的数据)可能会导致漏报。

答:

0赞 youyou 10/27/2023 #1

看看这两个链接:

长话短说:在应用程序启动之前添加这两行对我有用。

from PySide6.QtQuick import QQuickWindow, QSGRendererInterface
QQuickWindow.setGraphicsApi(QSGRendererInterface.GraphicsApi.OpenGL)

对于设置为“”的 doh -- SystemOnly 消息,我仍在调查它。一个好的起点是抛出它的 C++ 代码

评论

0赞 user22495 10/28/2023
感谢这两个链接!它们看起来是一个非常可能的解释!唉,你的解决方案对我不起作用。与以前相同的崩溃,也使用其他选项,例如 ,即使有 .QSGRendererInterface.GraphicsApi.SoftwareQSGRendererInterface.GraphicsApi.Null