提问人:user22495 提问时间:10/22/2023 最后编辑:user22495 更新时间:10/27/2023 访问量:163
PySide6 中的 QWebEngineView 未加载任何页面
QWebEngineView in PySide6 not loading any page
问:
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文件夹中有几个副本。
答:
0赞
youyou
10/27/2023
#1
看看这两个链接:
- https://www.qt.io/blog/new-graphics-integration-in-qt-webengine-6.6-and-even-6.5.1
- https://doc.qt.io/qtforpython-6/overviews/qtquick-visualcanvas-adaptations.html
长话短说:在应用程序启动之前添加这两行对我有用。
from PySide6.QtQuick import QQuickWindow, QSGRendererInterface
QQuickWindow.setGraphicsApi(QSGRendererInterface.GraphicsApi.OpenGL)
对于设置为“”的 doh -- SystemOnly 消息,我仍在调查它。一个好的起点是抛出它的 C++ 代码。
评论
0赞
user22495
10/28/2023
感谢这两个链接!它们看起来是一个非常可能的解释!唉,你的解决方案对我不起作用。与以前相同的崩溃,也使用其他选项,例如 ,即使有 .QSGRendererInterface.GraphicsApi.Software
QSGRendererInterface.GraphicsApi.Null
评论