问题描述
我想使用python-curses在终端上显示彩色的ascii艺术(例如Windows cmd)。我写了一些非常基本的东西:
import time
import curses
stdscr = curses.initscr()
curses.noecho()
curses.cbreak()
stdscr.keypad(True)
f = open('betterdays.ansi.txt',"r",encoding="utf8")
asciiart = f.read()
for y,line in enumerate(asciiart.splitlines(),2):
stdscr.addstr(y,2,line)
stdscr.refresh()
time.sleep(5)
curses.echo()
curses.nocbreak()
stdscr.keypad(False)
curses.endwin()
whihc给了我错误:
stdscr.addstr(y,line)
_curses.error: addwstr() returned ERR
我已经看过this question,但不能解决我的问题。有没有更好的方法可以做到这一点?任何建议都将不胜感激。
解决方法
这不是“彩色ASCII”-在过去,我们将其称为ANSI艺术。 Curses不会解释产生颜色和运动的ANSI转义序列,也不会将它们干净地传递到终端,即使它可能(通常会,但是取决于终端)使用它们本身来呈现其输出。 / p>
您可以采用两种基本方法:如果您在更广泛的curses框架中工作并且确实想要这些功能,则可以自己解释ANSI序列,并将其呈现为curses结构。
更简单地说,如果您只想将该图像显示在屏幕上,并且知道终端已经支持ANSI,则跳过curses,仅通过标准输出打印每一行。