[英]ANSI Escape Sequences Fail in Cygwin
我正在嘗試在 Python 2.7.2 中使用 ANSI 轉義序列為 CLI 程序創建“下拉菜單”。 我使用 ANSI 轉義序列將“選項”更改為紅色並將它們顯示在輸入行下方,然后清除它們。
我能夠在運行 Ubuntu 10.04LTS 的系統上運行代碼,該系統運行 Python 2.6.5,但無法讓程序在運行 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 上運行良好),這違背了提示文本的目的。 提前致謝 - 保羅
您無法執行此操作,因為 Windows 控制台根本不支持 ANSI。
在 MSDOS 時代,有一個ANSI.SYS
驅動程序,您可以加載它以啟用它們,但現在沒有了。
我的印象是,如果你想構建一個 TUI 界面(文本用戶界面),你將需要調查像https://pypi.python.org/pypi/UniCurses這樣的東西的使用
參考:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.