微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决使用Python curses在终端中显示彩色的ascii艺术

我想使用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,但不能解决我的问题。有没有更好的方法可以做到这一点?任何建议都将不胜感激。

.txt文件可以查看/下载here

解决方法

这不是“彩色ASCII”-在过去,我们将其称为ANSI艺术。 Curses不会解释产生颜色和运动的ANSI转义序列,也不会将它们干净地传递到终端,即使它可能(通常会,但是取决于终端)使用它们本身来呈现其输出。 / p>

您可以采用两种基本方法:如果您在更广泛的curses框架中工作并且确实想要这些功能,则可以自己解释ANSI序列,并将其呈现为curses结构。

更简单地说,如果您只想将该图像显示在屏幕上,并且知道终端已经支持ANSI,则跳过curses,仅通过标准输出打印每一行。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。