4

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 で正常に動作します)。これは、プロンプト テキストの目的を無効にします。前もって感謝します - ポール

4

1 に答える 1

-1

Windows コンソールは ANSI をまったくサポートしていないため、これを行うことはできません。

MSDOS の時代には、ANSI.SYSそれらを有効にするためにロードできるドライバーがありましたが、今はそうではありません。

私の印象では、TUI インターフェイス (text-user-interface) を構築したい場合は、 https://pypi.python.org/pypi/UniCursesのようなものの使用を調査する必要があるということです。

参考文献:

于 2015-11-25T12:13:27.490 に答える