Обновление многолинейного терминала Python - PullRequest
0 голосов
/ 19 августа 2011

Краткий вопрос
Можно ли / практично написать и обновить многострочную (содержит \n) строку на терминале Windows?

Фон
Я изучил curses , но это только Unix.Я видел несколько других портов Windows, но меня беспокоило, что Windows XP была экспериментальной ОС для одного из них.Я надеюсь использовать это как часть диагностической функции для отображения статуса ссылки, скорости передачи сообщений и т. Д. В основном терминальном приложении (обратите внимание, что в некоторых вариантах есть GUI-вход wxPython).При этом использование Cygwin неидеально, и я хотел бы найти обходной путь, используя только модуль sys.

Я попробовал следующее:)
Попытка 1: обновление строки, но все в одной строке

sys.stdout.write("\r")
sys.stdout.write("This is a multi-line screen print test") 
sys.stdout.write("Line 1") 
sys.stdout.write("Line 2") 
sys.stdout.flush()  

Попытка 2: не обновление, но печать всех строк

sys.stdout.write("\r")
sys.stdout.write("This is a multi-line screen print test\n") 
sys.stdout.write("Line 1 \n") 
sys.stdout.write("Line 2\n") 
sys.stdout.flush()

Ответы [ 2 ]

1 голос
/ 26 апреля 2012

Самым близким, что я мог найти к curses (который был обновлен за последние 10 лет), было Windows Console Driver . Вместо того, чтобы использовать этот подход, я использовал менее элегантный метод.

import os
import time

while(1):
    time.sleep(.05)
    os.system('cls')
    print "This is a multi-line screen print test"
    print "Line 1" 
    print "Line 2" 
0 голосов
/ 19 августа 2011

Возможно, вам придется использовать API консоли Windows . Например, SetConsoleCursorPosition. Другие люди, похоже, реализовали модули Python для поддержки этого API: 1 , 2

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