Как корректно вывести в поле окна Tkinter вывод команды subprocess
Всем доброго времени суток! Я изучаю взаимодействие Tkinter и subprocess и не могу понять как результат команды отобразить ввиде корректного текста в окне Tkinter. Вот код:
from tkinter import *
import subprocess
root = Tk()
def printName():
text1 = subprocess.run(["ping", "ya.ru"], capture_output=True, text=True)
text.insert(END, str(text1) + '\n')
text = Text(root)
text.grid()
button = Button(root, text='Print information', command=printName)
button.grid()
root.mainloop()
Ответы (1 шт):
Автор решения: GrAnd
→ Ссылка
Консоль в Windows имеет кодировку DOS (cp866), так что надо просто её указать. И текст взять из атрибута stdout.
text1 = subprocess.run(["ping", "ya.ru"], capture_output=True, text=True, encoding='cp866').stdout
Или можно преобразовать кодировку потом, если по какой-то причине уже прочитали в неправильной.
text1 = subprocess.run(["ping", "ya.ru"], capture_output=True, text=True).stdout
text1 = text1.encode('cp1251').decode('cp866')


