2012-04-04 4 views
4

파이썬 2.7.2에서 ANSI 이스케이프 시퀀스를 사용하여 CLI 프로그램의 '드롭 다운 메뉴'를 만들려고합니다. ANSI 이스케이프 시퀀스를 사용하여 '옵션'을 빨간색으로 변경하고 입력 행 아래에 표시 한 다음 나중에 지 웁니다.Cygwin에서 ANSI 이스케이프 시퀀스가 ​​실패합니다.

파이썬 2.6.5를 실행하는 Ubuntu 10.04LTS를 실행하는 시스템에서 코드를 실행할 수 있지만 Cygwin minTTY 1.0.3을 실행하는 Windows XP 컴퓨터에서 프로그램을 실행할 수 없습니다. Windows 또는 Cygwin에서 sys.stdout.flush()에 문제가 있습니까? 파이썬 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 (다시, 코드는 우분투에서 잘 작동)에서 선택을 할 때까지 인쇄하지 않습니다. 미리 감사드립니다 - Paul

답변

0

Windows 콘솔이 ANSI를 전혀 지원하지 않기 때문에이 작업을 수행 할 수 없습니다.

MSDOS 일 이전에로드 할 수있는 드라이버는 ANSI.SYS 이었지만 더 이상 사용할 수 없습니다.

:

내 인상은 당신이 (텍스트 사용자 인터페이스)

참조하는 TUI 인터페이스를 구축하려는 경우 https://pypi.python.org/pypi/UniCurses 같은의 사용을 조사해야한다는 것입니다

관련 문제