У меня есть программа на 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
Передача вывода подпроцесса в GUI Live ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Передача значений от Tkinter Gui к макросу ImageJ через Pyimagej в Python без подпроцесса
Anonymous » » в форуме Python - 0 Ответы
- 5 Просмотры
-
Последнее сообщение Anonymous
-