重定向简单 PyQt5 应用程序的标准输出

Redirecting stdout of a simple PyQt5 application

我有以下超级简单的 qt 应用程序:

import sys
from PyQt5 import QtWidgets

print('hello \n')
app = QtWidgets.QApplication(sys.argv)
app.exec_()

正常执行时显示终端问候消息,h/w将标准输出重定向到文件时:

python3 qt_redirect.py > file.txt

文件仍然是空的。

帮帮我,我在这里错过了什么?

python 版本 - 3.6.9 PyQt5 版本 - 5.14.1 os - ubuntu 18.04.3 LTS

解决方案是在打印时清理缓冲区,为此有几种选择:

  • 冲洗=真
print('hello \n'. flush=True)
  • 将 PYTHONUNBUFFERED 环境变量设置为“1”:
PYTHONUNBUFFERED=1 python3 qt_redirect.py > file.txt
  • 使用 python“-u”选项:
python3 -u  qt_redirect.py > file.txt