PyQt5/PyQt6应用show()方法加载耗时5秒问题求助
PyQt5/QWidget show()方法加载耗时5秒的排查与解决
最近一周,我的PyQt5应用加载突然变得很慢,哪怕是最基础的示例程序也要耗时5秒,问题集中在show()方法上,之前加载都是即时完成的。
基础示例代码:
import sys from PyQt5.QtWidgets import QApplication, QWidget app = QApplication(sys.argv) window = QWidget() window.show() sys.exit(app.exec_())
通过cProfile分析,结果显示show()方法占用了全部5秒耗时:
ncalls tottime percall cumtime percall filename:lineno(function) 1 5.063 5.063 5.063 5.063 {built-in method show} 1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}
我做了两组测试验证:
- 搭配
QTimer.singleShot调用show():1 5.057 5.057 5.057 5.057 {built-in method show} 1 0.000 0.000 0.000 0.000 {singleShot} - 调用两次
show()方法:2 5.063 2.532 5.063 2.532 {built-in method show}
从结果能看出,不管部件数量多少,总耗时始终固定为5秒。
运行环境
- Windows 11
- Python 3.10.11
- PyQt5 5.15.10
已尝试重装PyQt5、在虚拟环境运行,问题依然存在;换成PyQt6也有同样问题,且在VSCode和CMD中运行结果一致。
排查方向与解决建议
- 检查显卡驱动:Qt依赖系统图形渲染组件,若最近有驱动更新或异常,可能导致渲染初始化卡顿。尝试回滚或重新安装厂商官方显卡驱动,避免使用Windows自动更新的版本。
- 禁用Qt硬件加速:如果是硬件加速兼容性问题,可在初始化
QApplication前强制禁用:import sys from PyQt5.QtWidgets import QApplication, QWidget from PyQt5.QtCore import Qt QApplication.setAttribute(Qt.AA_DisableHardwareAcceleration) app = QApplication(sys.argv) window = QWidget() window.show() sys.exit(app.exec_()) - 排查安全软件拦截:部分防火墙或安全软件可能拦截Qt图形组件的初始化请求,导致5秒超时。临时关闭安全软件测试是否恢复正常。
- 检查Windows系统更新:最近的系统更新可能引入兼容性问题,查看更新记录并尝试卸载近期安装的更新。
- 测试原生Qt程序:运行非Python的Qt原生应用(如Qt Creator自带示例),若同样卡顿,说明问题出在系统层面而非PyQt本身。
内容的提问来源于stack exchange,提问作者glikoliz
相关产品推荐
相关产品推荐

