Как корректно вывести в поле окна 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()

Пример вывода команды ping в win7 Пример выполнения программы в Tkinter, IDE PyCharm


Ответы (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')

введите сюда описание изображения

→ Ссылка