Python 2.7.2 で ANSI エスケープ シーケンスを使用して CLI プログラムの「ドロップダウン メニュー」を作成しようとしています。ANSIエスケープシーケンスを使用して「オプション」を赤に変更し、入力行の下に表示してからクリアします。
Python 2.6.5 を実行する Ubuntu 10.04LTS を実行するシステムでコードを実行できますが、Cygwin minTTY 1.0.3 を実行する Windows XP マシンでプログラムを実行することはできません。Windows または Cygwin の sys.stdout.flush() に問題はありますか? 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 で正常に動作します)。これは、プロンプト テキストの目的を無効にします。前もって感謝します - ポール