PyQt5程序在PyCharm中无法输出print内容的问题求助
解决PyQt5 GUI程序中print()无法输出到PyCharm控制台的问题
这种情况我之前也碰到过,在PyQt GUI程序启动后,标准输出流经常会被Qt的事件循环干扰,导致print()的内容没法正常显示在PyCharm的控制台里。结合你的环境(PyQt5 5.6.0 + Python3.4.5 + PyCharm 2018 EAP),给你几个可行的解决方案:
1. 调整PyCharm的运行配置
这是最常见的解决办法,PyCharm默认的GUI程序运行配置可能没开启终端模拟:
- 打开顶部菜单栏的
Run→Edit Configurations - 找到你运行
module2.py的配置项 - 勾选Emulate terminal in output console选项
- 点击
Apply保存后重新运行程序,应该就能看到print的内容了
2. 手动重定向标准输出
如果配置调整没用,可以在module2.py的最开头(创建QApplication实例之前)加上这段代码,强制把输出绑定回Python的原生标准输出:
import sys # 重定向stdout和stderr到原生流 sys.stdout = sys.__stdout__ sys.stderr = sys.__stderr__
另外,也可以给print()加上flush=True参数,强制刷新输出缓冲:
print("调试信息", flush=True)
3. 改用Qt自带的日志输出
PyQt提供了自己的日志系统,完全不受标准输出流的影响,用qDebug()可以直接在PyCharm控制台输出内容:
from PyQt5.QtCore import qDebug # Python3需要传入bytes类型,或者用字符串编码 qDebug("调试信息".encode("utf-8")) # 或者封装成更方便的函数 def qprint(msg): qDebug(str(msg).encode("utf-8")) qprint("这是我的调试内容")
4. 考虑升级PyQt版本
你使用的PyQt5.6.0是比较老旧的版本,和Python3.4搭配可能存在输出流相关的bug。Python3.4最高支持到PyQt5.12.x版本,你可以尝试升级到这个系列的稳定版,大概率能解决这类兼容性问题:
pip install pyqt5==5.12.3
为什么单独运行module1正常?
因为module1.py没有启动Qt的GUI事件循环,Python的标准输出流保持正常工作状态;而当module2.py启动QApplication并进入事件循环后,Qt会修改输出流的处理逻辑,导致print()的内容被缓冲或者没有定向到PyCharm的控制台窗口。
内容的提问来源于stack exchange,提问作者kronosjt
相关产品推荐
相关产品推荐

