Как получить вывод команд терминала в текстовую область графического интерфейса Python, используя подпроцесс? - PullRequest
0 голосов
/ 29 апреля 2018
   import subprocess
   subprocess.call('gcc a.c', shell=True)
   subprocess.call('./a.out', shell=True)

Я выполняю эту инструкцию для компиляции файла ".c". Я получил вывод в бэкэнде.

Но как я могу получить вывод этой программы на C в текстовой области Python (я использую tkinter, python 2.7)?

Другая проблема в том, что я не могу сканировать входные данные, но могу компилировать только те программы, которые не будут принимать входные данные.

1 Ответ

0 голосов
/ 29 апреля 2018

вы можете использовать подпроцесс. Открыть и перенаправить стандартный вывод в PIPE и проверить просто прочитайте стандартный вывод, например, 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()

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...