【发布时间】:2021-03-25 10:00:09
【问题描述】:
with Popen([cmd command], stdout=PIPE, bufsize=1,
universal_newlines=True) as p:
for line in p.stdout:
log.insertPlainText(line)
我想通过Python代码运行exe文件,实时从pyqt获取打印内容。所以我写了上面的代码。但是,在cmd中打印的所有结果都执行完之后,exe内容一下子打印出来了。即使 cmd 仍在工作,我也想在 GUI 中实时接收它,而不是在执行完 cmd 的所有内容后将其输出到 pyqt。我想要一个参数值或其他方法来解决这个问题。
【问题讨论】:
-
如果您想逐行处理exe的输出或其他内容,我仍然有点不清楚。我(似乎)理解的是,您可以一次获得所有输出。这是正确的吗?
-
@Wolf 我已经单独实现了 pyqt GUI,并且我为所有操作创建了一个单独的 python 文件。你知道如何让它作为 Python 文件而不是在 GUI 上工作吗?
-
也许用
print(line)和import subprocess替换log.insertPlainText(line)和显示块之前的import subprocess。您可能能够以交互方式检查行为。 -
@Wolf 我已经检查了 print(line) 结果输出是否正确,但我希望 exe 的输出被视为 GUI 上的日志,而不是 cmd 的输出。这就是我使用 log.insertPlainText 的原因。
-
print(line)的时候,结果是从cmd实时输出的(所以我用了'properly'这个词),但问题是log .insertPlaintext(line) 结果不会在 GUI 上实时输出。