Я пишу очень простой графический интерфейс Python Tkinter для запуска сценария Python из командной строки.
Мой графический интерфейс будет работать на хосте Windows, и я хочу, чтобы он отображал многострочный текст-текстовый вывод сценария, который возвращается в графический интерфейс в виде строки, содержащей - конечно же - разрывы строк (\n
символов).
Итак, я помещаю текстовый виджет в графический интерфейс и когда мой сценарий- в примере - возвращает вывод, который начинается с этой подстроки:
RESULT STATUS: OK- Service is currently running\n\nDETAILS: ...
отображаемый текст содержит черные вертикальные полосы (|
) всякий раз, когда есть \n
символ переноса строки,
Линии правильно разорваны, но эти странные полосы заставляют меня думать, что символ разрыва строки \n
неправильно декодирован, и я не хочу, чтобы полосы отображались в моем выводе.
Есть идеи, как заставить Tkinter правильно отображать окончания строк?Заранее спасибо.
Код
Это рабочий процесс для моего графического интерфейса:
- Я нажимаю кнопку, которая вызывает функцию обратного вызова callMe ()
- Функция callMe () анализирует аргументы, поступающие из виджета Entry, а затем вызывает скрипт командной строки python
- Скрипт возвращает вышеупомянутую строку, и он используется обратным вызовом для обновления текставиджета Текст
Вот код:
#init the GUI elements and the Text widget
from Tkinter import *
root = Tk()
top = Frame(root)
outputFrame = Frame(top)
outputFrame.pack(side='top', padx=20, pady=20)
outputTextArea = Text(outputFrame, yscrollcommand=scrollbar.set, width=150, height=40)
outputTextArea.pack(side='left', expand=YES, fill='both')
#callback executed when the button is clicked
def callMe()
#get parameters
# .....
#command line execution script execution
process = subprocess.Popen(command_line, stdout=subprocess.PIPE, shell=True)
#get script output
matr = process.stdout.readlines()
#from a list of strings to a single string
output = "".join(matr)
#write output into the Text widget
outputTextArea.insert(0.0, output)