【问题标题】:Display colored ascii art in terminal using Python curses使用 Python 诅咒在终端中显示彩色 ascii 艺术
【发布时间】:2020-10-29 00:05:05
【问题描述】:

我想使用 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()

这给了我错误:

 stdscr.addstr(y, 2, line)
_curses.error: addwstr() returned ERR

我已经看过this question,但它并没有解决我的问题。有没有更好的方法来实现这一点?非常感谢任何建议。

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

【问题讨论】:

  • 顺便说一句,我在回答中的所有内容都不能很好地解释您的错误消息。您在什么操作系统上使用什么版本的 Python?
  • 我使用的是 Python 3.8.5
  • 这能回答你的问题吗? How to display pre-colored string with curses?

标签: python python-3.x curses ascii-art python-curses


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2019-12-14
    • 2015-08-14
    • 1970-01-01
    • 2013-09-04
    • 2017-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-30
    相关资源
    最近更新 更多