首页 > 解决方案 > 为什么 log.plaintext 在 Python 中响应较晚?

问题描述

我想在pyqt上执行exe后看到stdout的立即执行结果。我在 Python 代码中实现了我想要的所有操作,其余的都链接到 pyqt 的小部件。我想从pyqt打印出exe的立即执行结果。虽然在 cmd 窗口中一切正常输出,而在所有 cmd 执行结束后的最后一次只显示 log.insertPlainText 部分输出。

我确信这不是一个重复的问题。我想要的不是 pyqt 的解决方案,而是我想完全用 Python 代码解决它。我尝试了很多不同的方法,但是在 cmd 执行结束时仍然会同时打印日志。我使用 log.insertPlainText 而不是 print 的原因是,因为我想在 pyqt 中显示输出结果。

我已经尝试过的:

cmd = [cmd command]
p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, universal_newlines=True, bufsize=1) 

for line in iter(p.stdout):
    log.insertPlainText(line)
p.stdout.close()
p.wait()

with Popen([cmd command], stdout=PIPE, bufsize=1, 
    universal_newlines=True) as p:
    for line in p.stdout:
        log.insertPlainText(line)

标签: pythonpyqt

解决方案


推荐阅读