Python wx(Python卡)将子进程输出记录到窗口

Python wx(Python卡)将子进程输出记录到窗口,python,wxpython,pythoncard,Python,Wxpython,Pythoncard,这个问题有很多问题,但我想看到一个明确的答案。我正在用PythonCard构建一个简单的GUI来包装一个命令行进程。具体来说,它是一系列ANT任务和其他自定义操作的包装器,因此非开发人员可以使用它 我想将子流程的输出重定向到窗口中的文本区域。这样做的方法似乎是使用subprocess.Popen(命令,stdout=subprocess.PIPE)并将输出加载到变量 问题是如何使用子流程的输出实时更新窗口?欢迎任何提示 谢谢,几乎每个可以包装的子流程都会缓冲其输出,除非您设法欺骗它,使它相信它实

这个问题有很多问题,但我想看到一个明确的答案。我正在用PythonCard构建一个简单的GUI来包装一个命令行进程。具体来说,它是一系列ANT任务和其他自定义操作的包装器,因此非开发人员可以使用它

我想将子流程的输出重定向到窗口中的文本区域。这样做的方法似乎是使用
subprocess.Popen(命令,stdout=subprocess.PIPE)
并将输出加载到变量

问题是如何使用子流程的输出实时更新窗口?欢迎任何提示


谢谢,几乎每个可以包装的子流程都会缓冲其输出,除非您设法欺骗它,使它相信它实际上连接到了终端,而子流程无法做到这一点。更确切地说,查看(在每个允许您使用伪终端的平台上运行良好,即除Microsoft Windows之外的所有平台;在Windows上您可以尝试,但我没有使用后者的经验)


这些模块会在子流程生成后立即向您提供其输出,并试图欺骗模块尽快生成该输出,而无需缓冲,因此它们应该可以让您轻松地实时接收该输出,并将其附加到要不断更新的文本字段中。

我也在为此寻找解决方案。事实证明,解决方案非常简单: proc=subprocess.Popen(“任何程序”,cwd=“启动目录”,shell=True, stdout=subprocess.PIPE,stderr=subprocess.stdout)
尽管如此:
txt=proc.stdout.readline()
如果不是txt:中断
txt=txt.replace(“\r\n”,“\n”)。replace(“\r\n”,“\n”)。replace(“\\”,“\”)
self.components.taStdout.appendText(txt)