簡體   English   中英

ANSI 轉義序列在 Cygwin 中失敗

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM