Последовательности сброса ANSI не удаются в Cygwin

Я пытаюсь создать "выпадающее меню" для программы CLI, используя escape-последовательности ANSI в Python 2.7.2. Я использую escape-последовательности ANSI, чтобы изменить "опции" на красный и отобразить их под строкой ввода, а затем очистить их.

Я могу запустить код в системе под управлением Ubuntu 10.04LTS с Python 2.6.5, но не могу запустить программу на компьютере под управлением Windows XP с Cygwin minTTY 1.0.3. Есть ли проблема с sys.stdout.flush() в Windows или Cygwin? Это проблема с Python 2.6 до 2.7? Не знаю, с чего начать отладку.

#!C:\Python27\python.exe
#!/usr/bin/python

import sys

table = {1:'foo', 2:'bar', 3:'foo'}
print '\n'
for item in table.keys() :
    sys.stdout.write('\033[1;31m    %s) %s\033[0m\n' % (item,table[item]))
    sys.stdout.flush()
sys.stdout.write('%s' %((item+1)*'\033M'))
sys.stdout.flush()
answer = raw_input("Select foobar: ")
sys.stdout.write('\033[J')
sys.stdout.flush()
print 'You have selected %s' % (table[answer])

Проблема заключается в том, что необработанный вводимый текст не распечатывается до тех пор, пока вы не сделаете свой выбор в minTTY (опять же, код прекрасно работает в Ubuntu), что отрицательно сказывается на назначении текста подсказки. Заранее спасибо - Пол

1 ответ

Решение

Вы не можете сделать это, потому что консоль Windows вообще не поддерживает ANSI.

Еще в дни MSDOS был ANSI.SYS драйвер, который вы могли бы загрузить, чтобы включить их, но не больше.

У меня сложилось впечатление, что вам нужно исследовать использование чего-то вроде https://pypi.python.org/pypi/UniCurses если вы хотите создать интерфейс TUI (текст-пользовательский интерфейс)

Рекомендации:

Другие вопросы по тегам