使用Python curses在终端中显示彩色ascii艺术



我想使用python curses在终端(例如windows cmd(中显示一个彩色ascii艺术。我写了一些非常基本的东西,比如:

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, 2, line)
_curses.error: addwstr() returned ERR

我已经考虑过这个问题,但它并不能解决我的问题。有更好的方法来实现这一点吗?如有任何建议,我们将不胜感激。

可以在此处查看/下载.txt文件。

这不是"彩色ASCII"——在过去,我们称之为ANSI艺术。Curses不会解释生成颜色和运动的ANSI转义序列,也不会将它们干净地传递到终端,即使它可能(通常会这样做,但这取决于终端(自己使用它们来呈现输出。

你可以采取两种基本方法:如果你在更广泛的curses框架中工作,并且真的想要这些功能,你可以自己解释ANSI序列,并在curses结构中呈现它们。

更简单地说,如果你只想把图像放在屏幕上,并且你知道你的终端已经支持ANSI,那么跳过诅咒,通过标准输出打印每一行。

最新更新