Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用子流程将终端命令输出到python gui文本区域?_Python_Python 2.7_Tkinter_Subprocess - Fatal编程技术网

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

如何使用子流程将终端命令输出到python gui文本区域?,python,python-2.7,tkinter,subprocess,Python,Python 2.7,Tkinter,Subprocess,我执行此语句是为了编译一个“.c”文件。我在后端得到了输出 但是如何在python文本区域中获得C程序的输出(我使用的是tkinter,python 2.7) 另一个问题是,我无法扫描输入数据,但只能编译不接受输入数据的程序。您可以使用subprocess.Popen并将标准输出重定向到管道,然后在设置文本区域调用时测试简单的读取标准输出,例如complie.stdout.readlines() import subprocess subprocess.call('gcc a.c',

我执行此语句是为了编译一个“.c”文件。我在后端得到了输出

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


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

您可以使用subprocess.Popen并将标准输出重定向到管道,然后在设置文本区域调用时测试简单的读取标准输出,例如
complie.stdout.readlines()

   import subprocess
   subprocess.call('gcc a.c', shell=True)
   subprocess.call('./a.out', shell=True)
您可以将
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())
希望这有帮助

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()