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
相关产品推荐
相关产品推荐

