Win10下PySide2的QWebEngineView无法显示内容求助
我之前也踩过这个Win10下PySide2 QWebEngineView的坑!你的代码本身没毛病,Mac上正常运行就说明逻辑没问题,问题大概率出在Windows环境的依赖或者配置上,给你几个亲测有效的排查和解决方法:
检查PySide2的WebEngine组件是否完整
用pip直接安装PySide2时,偶尔会出现WebEngine相关组件(比如QtWebEngineCore、QtWebEngineProcess.exe)安装不完整的情况。建议先卸载现有版本,再重装完整包:pip uninstall PySide2 -y pip install PySide2 --force-reinstall如果用conda环境,直接用
conda install pyside2会更稳妥,conda会自动处理所有依赖。验证QtWebEngineProcess能否正常运行
QWebEngineView在Windows上依赖独立的QtWebEngineProcess.exe进程,这个文件通常在你的Python环境路径下的Lib\site-packages\PySide2\Qt\bin目录里。你可以手动双击运行它:- 如果弹出“缺少MSVCP140.dll”之类的错误,说明你没装Microsoft Visual C++ Redistributable for Visual Studio 2019(对应PySide2的编译环境),根据你的Python是32位还是64位,下载安装对应的运行库即可。
- 如果运行没报错,那这个组件本身是好的,继续排查其他原因。
排除网络或网站访问问题
有时候空白是因为目标网站无法访问(比如Google在国内的网络环境下无法直接打开),先换个国内可访问的网站测试,比如把http://www.google.com换成http://www.baidu.com。或者创建一个本地HTML文件:<!DOCTYPE html> <html> <body> <h1>测试页面</h1> <p>如果能看到这段文字,说明WebView本身是正常的</p> </body> </html>然后用本地路径加载:
my_url = QUrl.fromLocalFile("D:/test.html") # 替换成你的文件路径如果本地页面能显示,那问题就出在网络配置上,检查Win10的代理设置、防火墙是否阻止了Python或QtWebEngineProcess联网。
手动指定QWebEngineProfile(可选)
少数情况下,Windows上默认的WebEngine Profile会有异常,你可以手动创建一个Profile并绑定到WebView:from PySide2.QtCore import QUrl from PySide2.QtWebEngineWidgets import QWebEngineView, QWebEngineProfile, QWebEnginePage from PySide2.QtWidgets import QApplication APP = QApplication() # 创建一个自定义Profile profile = QWebEngineProfile("custom_profile", None) web_widget = QWebEngineView() # 绑定Profile到WebView的Page web_page = QWebEnginePage(profile, web_widget) web_widget.setPage(web_page) my_url = QUrl("http://www.baidu.com") web_widget.load(my_url) web_widget.show() APP.exec_()
最常见的原因其实是VC++运行库缺失或者WebEngine组件安装不全,先从这两个方向入手排查,大概率能解决问题。
内容的提问来源于stack exchange,提问作者Hubert Chauvat

