我正在尝试使用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上正常工作),这种方式违背了提示文本的目的。提前谢谢 - 保罗
答案 0 :(得分:0)
您无法执行此操作,因为Windows控制台根本不支持ANSI。
回到MSDOS时代,有一个ANSI.SYS
驱动程序,您可以加载它以启用它们,但不再存在。
我的印象是,如果要构建TUI界面(文本用户界面),则需要调查https://pypi.python.org/pypi/UniCurses之类的内容的使用
参考文献: