PyQt5 上的程序 + QWebEngineView 在加载 youtube.music 网站时关闭

Program on PyQt5 + QWebEngineView closes when loading youtube.music site

提问人:ツDeeffest笑 提问时间:7/20/2023 最后编辑:ツDeeffest笑 更新时间:11/2/2023 访问量:64

问:

PyQt5 + QWebEngineView 上的程序在打开后大约 3-4 秒后加载 youtube.music 站点时关闭,没有任何错误,而任何其他站点加载没有任何问题,程序不会自行关闭。这个问题从今天开始,昨天youtube.music在QWebEngineView中成功打开。我使用的是 Windows 10 21h1。

在我意识到问题不在我的代码中之后,我尝试使用 PyQt5 + QWebEngineView 并打开 music.youtube.com 编写一个完全干净的代码,但没有成功。

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


app = QApplication([])

window = QMainWindow()
central_widget = QWidget()
layout = QVBoxLayout(central_widget)

webview = QWebEngineView()
page = QWebEnginePage()
webview.setPage(page)
page.load(QUrl("https://music.youtube.com"))
layout.addWidget(webview)

window.setCentralWidget(central_widget)
window.show()

app.exec()

我也尝试清除 chrome 浏览器 cookie,但仍然没有运气。我不知道该怎么办。网站本身在 Firefox 和 Chrome 中都能成功打开。我也尝试通过谷歌搜索引擎去 music.youtube.com,但在打开程序关闭时仍然相同,没有错误:( 该怎么办?如何解决? P.S:如果将此代码编译为 .exe,则一切正常。

pyqt5 python-3.9 qwebengine查看 qwebenginepage

评论

0赞 musicamante 7/20/2023
我无法在 Linux 上使用最新的 PyQt5 重现这一点。在终端或命令提示符(不是从 IDE 中)运行脚本,并最终编辑您的帖子以在运行后提供完整的输出,直到它崩溃。
0赞 ツDeeffest笑 7/20/2023
@musicamante我在 Windows 10 终端和 sublime text 4 中都运行了代码,结果是一样的 - 没有输出到控制台。我还编写了一个跟踪页面标题更改的代码 - 当页面标题变成 Youtube Music 时,脚本就会停止。
0赞 ツDeeffest笑 9/2/2023
整个问题出在QWebEngine cookie上。如果您在目录 C:\Users\USERNAME\AppData\Local 中找到包含 QWebEngine cookie 的文件夹,并删除目录 YourAppName\QtWebEngine\Default 中的文件夹 Service Worker,则一切正常,站点数据不会丢失。

答:

0赞 ツDeeffest笑 8/5/2023 #1

整个问题出在QWebEngine cookie上。如果您在目录 C:\Users\USERNAME\AppData\Local 中找到包含 QWebEngine cookie 的文件夹,并删除目录 YourAppName\QtWebEngine\Default 中的文件夹 Service Worker,则一切正常,站点数据不会丢失。