如何显示带有诅咒的预着色字符串?

sec*_*wtq 5 python curses ncurses python-curses

我正在用 Python 编写一个 curses 程序。我是诅咒的初学者,但我已经使用终端控制序列进行彩色输出。

现在有一些代码片段要打印在窗口内,我希望它们被语法突出显示,最好使用像 pygments 这样的库来完成,它输出带有控制序列的突出显示代码。

最初我将 pygments 输出直接提供给window.addstr(),但结果是控制序列被转义并且整个突出显示的字符串打印在屏幕上(就像这样:https : //too-young.me/web/repos/curses-突出显示.png)。我怎样才能直接用诅咒来显示它,就像cat

spe*_*ler 5

Python 的“ culour ”模块就是干这个的。

使用 安装它pip install culour,然后您可以使用它来打印预着色的字符串:

import culour
culour.addstr(window, colored_string)
Run Code Online (Sandbox Code Playgroud)

这将在窗口中打印彩色字符串。


Tho*_*key 2

这个问题已经被问过好几次了,答案都是一样的:你可以编写一个解析器来做到这一点。curses(无论是否是 Python)是一个高级接口,具有一些用于特殊调整的低级函数。高层接口假设字符串都是要显示的数据。联机addch帮助页对此进行了一些详细解释。如果您使用低级函数(例如putp),则高级 Curses 调用不知道已显示的内容。

相关讨论:

它不适合作为 ncurses 的扩展,例如因为:

  • curses生成转义序列,但适用于多种设备(可能不是“ANSI 颜色转义”)。
  • ncurses(请参阅常见问题解答为什么我的错误没有被修复?)不提供它作为扩展,因为这种类型的解析器不会依赖于 ncurses 的任何内部结构。