如何解决QtWebKitWidgets.QWebView在Qt Designer中的运行报错问题?
解决PyQt5.6中QWebView报错QtWebKitWidgets未定义的问题
我太懂你的困惑了——Qt Designer里明明摆着QWebView控件,跑代码却报错找不到QtWebKitWidgets,这完全是官方更新的“滞后bug”:从PyQt5.6开始,Qt已经弃用了QtWebKit模块,转而用QtWebEngine替代,但Designer的控件列表没同步更新,才造成了这种矛盾。下面是不用重装PyQt、全程靠Designer配合Anaconda包解决的方案:
1. 先安装QtWebEngine替代模块
QtWebEngine是QtWebKit的官方继任者,Anaconda仓库里有现成的包。打开Anaconda终端(记得激活你的项目环境),执行命令安装:
conda install pyqtwebengine
2. 在Qt Designer中用「提升部件」替换QWebView
因为Designer默认没显示QWebEngineView控件,我们可以用普通QWidget间接实现:
- 先删掉你原来加的QWebView,拖一个普通
QWidget到主窗体的目标位置,调整好大小。 - 右键这个QWidget,选择提升为...(Promote to...)。
- 在弹出的提升窗口里:
- 「提升的类名称」填
QWebEngineView - 「头文件」填
PyQt5.QtWebEngineWidgets - 点「添加」,再点「提升」
- 「提升的类名称」填
做完这步,Designer就会把这个QWidget当作QWebEngineView处理,生成的代码会自动导入正确的模块,再也不会出现旧的QtWebKitWidgets相关错误。
3. 加载网页的代码示例
在主窗口的逻辑代码里,加载网页的方式和原来类似,只需要调整对应的类和导入:
from PyQt5.QtCore import QUrl from PyQt5.QtWebEngineWidgets import QWebEngineView # 假设你提升后的控件对象名叫webView_test self.webView_test.load(QUrl("https://www.example.com"))
这样就能正常显示网页内容了,既不用重装PyQt,GUI部分也全程通过Designer完成,完美匹配你的需求。
内容的提问来源于stack exchange,提问作者shafuq
相关产品推荐
相关产品推荐

