You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyQt5+QWebEngineView加载YouTube Music无报错闪退问题求助

PyQt5 QWebEngineView加载YouTube Music无报错闪退问题

我使用Windows 10 21H1系统,基于PyQt5+QWebEngineView开发的程序在加载YouTube Music网站时,打开约3-4秒后无任何报错直接闪退,但加载其他网站一切正常且程序不会自行关闭。该问题今日出现,昨日YouTube Music还能正常在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,但依旧无效。YouTube Music网站本身在Firefox和Chrome中均可正常打开,通过谷歌搜索跳转至该网站后,程序仍会无报错闪退。不过将代码编译为.exe文件后,程序可正常运行。请问该如何解决这个问题?


解决方法

  • 清理QWebEngine专属缓存:QWebEngine使用独立的用户数据目录,和Chrome的缓存路径不重合。找到默认存储路径C:\Users\<你的用户名>\AppData\Local\QtProject\QtWebEngine,直接删除整个文件夹后重启程序。
  • 强制启用软件渲染:YouTube Music的页面更新可能触发了QWebEngine硬件渲染的兼容性问题,在初始化QApplication前添加以下代码关闭硬件加速:
    from PyQt5.QtCore import Qt, QCoreApplication
    QCoreApplication.setAttribute(Qt.AA_UseSoftwareOpenGL)
    
    注意这行代码必须写在app = QApplication([])之前。
  • 升级PyQt5及PyQtWebEngine:老旧版本的WebEngine内核可能和新版YouTube Music不兼容,执行命令升级到最新稳定版:
    pip install --upgrade pyqt5 pyqtwebengine
    
  • 检查系统依赖组件:确保Windows 10安装了最新版的VC++ Redistributable运行库,QWebEngine的正常运行依赖该组件。

内容的提问来源于stack exchange,提问作者deeffest

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 15:06:18