如何使用子进程将终端命令输出到python gui文本区域?

时间:2018-04-29 09:56:05

标签: python python-2.7 tkinter subprocess

   import subprocess
   subprocess.call('gcc a.c', shell=True)
   subprocess.call('./a.out', shell=True)

我正在执行此语句来编译" .c"文件。我在后端得到了输出。

但是如何在python文本区域中获取该C程序的输出(我使用tkinter,python 2.7)?

另一个问题是,我无法扫描输入数据,但只能编译不会输入数据的程序。

1 个答案:

答案 0 :(得分:1)

您可以使用subprocess.Popen并将stdout重定向到PIPE并测试只需读取stdout例如complie.stdout.readlines()即可设置文本区域调用

import subprocess

complie = subprocess.Popen('gcc a.c', stdout=subprocess.PIPE,shell=True)
runprog  = subprocess.Popen('./a.out', stdout=subprocess.PIPE,shell=True)

print (complie.stdout.readlines())
print (runprog.stdout.readlines())

而不是打印,您可以将complie.stdout.readlines()放入文本区域设置调用

示例代码:

import subprocess
from tkinter import *

#Example on Windows

root = Tk()
T = Text(root, height=2, width=200)
T.pack()

complie = subprocess.Popen('ping google.com', stdout=subprocess.PIPE,stdin=subprocess.PIPE ,shell=True)
complie.wait()
outcome = complie.stdout.readlines()
print(outcome)
T.insert(END, outcome)
mainloop()

希望这有帮助