Передача вывода подпроцесса в GUI LivePython

Программы на Python
Anonymous
Передача вывода подпроцесса в GUI Live

Сообщение Anonymous »

У меня есть программа на Python, которая оборачивает другую программу, которую я запускаю, с помощью subprocess.run(). Программа имеет отличный консольный вывод, который я хотел бы отобразить в графическом интерфейсе:
[img]https://i.sstatic. net/9Q9vPpkK.png[/img]

Я изо всех сил пытаюсь понять, как захватить этот вывод и показать его в графическом интерфейсе. Я использую многопоточность для запуска процедуры подпроцесса, чтобы tkinter для графического интерфейса оставался отзывчивым и обновлялся по мере выполнения процесса, что может занять несколько часов. Операторы печати отображаются в графическом интерфейсе, но не выходные данные подпроцесса. Мне бы хотелось получить общее представление о том, как это будет работать.
Я подумал, что если бы я перенаправил стандартный вывод в вызове подпроцесса, это должно было бы сработать. Я не уверен, что я ошибся.
Класс, который перенаправляет операторы печати в графический интерфейс:
class RedirectOutput:
def __init__(self, text_widget):
self.text_widget = text_widget

def write(self, message):
self.text_widget.config(state='normal')
self.text_widget.insert(tk.END, message)
self.text_widget.config(state='disabled')
self.text_widget.see(tk.END)

def flush(self):
pass

# Redirect stdout to the ScrolledText widget
sys.stdout = RedirectOutput(self.output_text)

# Example of subprocess
subprocess.run([BASE_COMMAND[0], BASE_COMMAND[1], BASE_COMMAND[2],
"upload",
str(upload_file),
destination_path],
stdout=subprocess.PIPE,
creationflags=subprocess.CREATE_NO_WINDOW,
shell=True,)


Подробнее здесь: https://stackoverflow.com/questions/787 ... o-gui-live

Вернуться в «Python»