先确认python环境是否一致,再在对应环境安装pyqt5;确保app.exec_()执行、ui路径正确、信号槽函数签名匹配且无异常被静默忽略。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

PyQt 启动就报 ModuleNotFoundError: No module named 'PyQt5' 怎么办
不是没装,是装错了地方。Python 环境和你运行脚本的环境不一致,最常见的是用系统 Python 装了 PyQt5,但实际在 VS Code 或 PyCharm 里跑的是虚拟环境,里面压根没这个包。
- 先确认当前终端或 IDE 用的是哪个 Python:
which python(macOS/Linux)或where python(Windows) - 再在这个环境下装:
pip install PyQt5,别用sudo pip,也别用系统自带的python3 -m pip混着来 - 如果用 conda,统一用
conda install pyqt,别混 pip 和 conda 安装 PyQt,容易冲突 - PyQt6 和 PyQt5 不兼容,别同时装;项目里明确写的是
from PyQt5.QtWidgets import QApplication,就别硬切 PyQt6
窗口一闪就消失,app.exec_() 没执行?
根本原因是 Python 进程退出太快,GUI 线程没机会启动。不是代码写错了,是少了关键的事件循环入口。
- 确保最后一行是
app.exec_()(PyQt5)或app.exec()(PyQt6),不能写成app.exec(少括号)或放在函数里没调用 - 别把主窗口对象赋值给局部变量后就结束函数,比如写在
def main():里但没 return 或没保持引用,窗口对象被 GC 回收,进程直接退出 - 调试时加一句
print("before exec"),看是否真的执行到那里;如果没打印,说明前面某处抛了异常(比如 UI 文件加载失败),被静默吞掉了
用 uic.loadUi() 加载 .ui 文件总报 AttributeError: 'NoneType' object has no attribute 'setupUi'
路径错了,或者文件根本没读到。loadUi() 返回 None 时不会报错,只会让你后面调 setupUi() 崩溃。
- 用绝对路径测试一次:
uic.loadUi("/full/path/to/your.ui"),确认文件存在且可读 - 相对路径基于当前工作目录(
os.getcwd()),不是脚本所在目录;建议统一用Path(__file__).parent / "xxx.ui"构造路径 - Qt Designer 保存的 .ui 文件编码要是 UTF-8,带 BOM 会导致解析失败(尤其 Windows 上)
- 如果用
pyuic5 xxx.ui -o xxx_ui.py生成 Python 模块,记得导入后要手动调用self.setupUi(self),别漏掉
按钮点击没反应,clicked.connect() 像没绑定
连接本身成功了,但槽函数执行时出错,Qt 默认静默忽略异常,看起来就像没响应。
立即进入“豆包AI人工智官网入口”;
立即学习“豆包AI人工智能在线问答入口”;
- 在槽函数第一行加
print("slot triggered"),确认是否进得去 - 检查函数签名:如果用了带参数的信号(比如
textChanged),但槽函数没声明参数,会断连;clicked是无参信号,槽函数必须是def on_click(self):,不能多也不能少 - 别在
__init__外面写连接语句,比如写在类定义之后、实例化之前,那会绑定到类而不是实例 - PyQt 的信号连接是强引用,如果槽函数是 lambda 且捕获了大对象(比如整个窗口),可能引发循环引用,长期运行内存涨——这种问题不会当场报错,但得心里有数
print 和 type(),比查文档快得多。











