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

使用pyside2-uic转QT Designer UI文件报No module named 'QWebEngineView'如何解决

PySide2转换包含QWebEngineView的UI文件报错解决方案

我长期使用Qt Designer制作GUI,保存为XML格式的.ui模板文件,通过PySide2工具链转换为Python类文件。对包含QWebEngineView组件的UI文件执行转换命令时:

pyside2-uic GUI_NEW.ui > ui_main.py

生成的ui_main.py文件头部自动生成了错误的导入语句:

################################################################################
## Created by: Qt User Interface Compiler version 5.15.2
##
## WARNING! All changes made in this file will be lost when recompiling UI file!
################################################################################

from PySide2.QtCore import *
from PySide2.QtGui import *
from PySide2.QtWidgets import *

from QWebEngineView import QWebEngineView

运行调用该文件的程序时抛出如下错误:

ModuleNotFoundError: No module named 'QWebEngineView'

已尝试无效方案

  • 更换PySide2为PySide6测试
  • 手动将导入语句替换为from PySide2.QtWebEngineWidgets import QWebEngineView,程序可启动但完全卡死无响应
  • 执行pip install PyQtWebEngine安装依赖
  • 执行pip install PyQt5==5.11.3安装指定版本
  • 完全卸载所有Qt相关依赖(含PySide、PyQt全系列)后重新安装
  • 在Python 3.6~3.8多版本环境中重复上述所有操作

可落地解决方案

第一步:修复uic自动生成导入错误的根因

uic生成错误导入语句的原因是Qt Designer中未正确声明QWebEngineView的所属模块,需要在.ui文件中手动添加头部声明:

  1. 用文本编辑器打开GUI_NEW.ui文件,找到<ui>标签下的<customwidgets>节点(如果没有就手动新增)
  2. 插入如下QWebEngineView的模块声明:
<customwidget>
 <class>QWebEngineView</class>
 <extends>QWidget</extends>
 <header>PySide2.QtWebEngineWidgets</header>
</customwidget>
  1. 保存后重新执行pyside2-uic GUI_NEW.ui > ui_main.py,此时生成的导入语句会自动变为正确的from PySide2.QtWebEngineWidgets import QWebEngineView,无需手动修改生成文件

第二步:解决程序启动卡死问题

程序卡死是因为QWebEngineView需要单独的进程初始化,且必须在Qt主事件循环启动前完成核心配置:

  1. 主程序入口处初始化QApplication时,必须添加属性配置:
from PySide2.QtCore import Qt
from PySide2.QtWidgets import QApplication
from PySide2.QtWebEngineWidgets import QWebEngineSettings

if __name__ == "__main__":
    # 必须在QApplication实例化前设置属性
    QApplication.setAttribute(Qt.AA_ShareOpenGLContexts)
    app = QApplication([])
    # 禁用不必要的WebEngine特性减少卡顿
    QWebEngineSettings.globalSettings().setAttribute(QWebEngineSettings.PluginsEnabled, False)
    QWebEngineSettings.globalSettings().setAttribute(QWebEngineSettings.JavascriptCanOpenWindows, False)
    
    # 后续正常加载主窗口代码
    # ...
    app.exec_()
  1. 确认当前环境安装的PySide2版本配套的WebEngine组件完整,执行安装命令:
pip install pyside2==5.15.2 pyside2-addons

注意PySide2的WebEngine组件包含在pyside2-addons包中,无需安装PyQt相关依赖,避免版本冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 17:48:02