Есть ли способ распечатать все выходные данные в текстовом поле Python Tkinter, когда я выполняю внешний скрипт Python? - PullRequest
0 голосов
/ 29 октября 2019

Я создаю программное обеспечение с графическим интерфейсом (использующее Python3 Tkinter), которое выполняет команду linux при нажатии кнопки (команда: python3 external_python_script.py ), однако я хочу, чтобы все выходные данные отображались внутримоя программа с графическим интерфейсом (в частности, внутри текстового поля), потому что по умолчанию все выходы отображаются в терминале. Есть ли способ решить эту проблему? Ответы с благодарностью!

1 Ответ

0 голосов
/ 30 октября 2019

В зависимости от ваших точных требований, я предлагаю вам использовать функцию check_output модуля подпроцесса. Как показано в следующем коде:

import subprocess

from tkinter import *

root = Tk()

text = Text(root)
text.grid()

output = subprocess.check_output(['python3', 'python_script_name'], encoding='utf-8')
print(type(output))

for line, out in enumerate(output):
    text.insert("{}.{}".format(line, 0), out, "{}.end".format(line)) 

root.mainloop()

Имя сценария Python должно быть полным путем к сценарию Python, иначе убедитесь, что файл сценария Python находится в том же каталоге, что и сценарий, который включаетвызов функции check_output. Кодировка = 'utf-8' гарантирует, что функция возвращает строку, которая хорошо печатается в текстовом виджете. Без ключевого слова кодирования check_output возвращает байтовый объект, который плохо печатается в текстовом виджете.

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