如何用curses显示预先着色的字符串?

时间:2015-05-12 11:24:39

标签: python ncurses curses python-curses

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

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

最初我将pygments输出直接输入window.addstr(),但事实证明控制序列已转义,整个突出显示的字符串打印在屏幕上(就像这样:https://too-young.me/web/repos/curses-highlight.png)。如何使用curses直接显示它,就像cat

一样

3 个答案:

答案 0 :(得分:1)

这已被问过几次,答案相同:你可以写一个解析器来做这件事。相关讨论:

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

  • curses 生成转义序列,但适用于各种设备(可能不是“ANSI颜色转义”)。
  • ncurses(请参阅常见问题 Why aren't my bugs being fixed? )并未将其作为扩展名提供,因为此类型的解析器不会依赖任何ncurses的内部。

答案 1 :(得分:0)

在GitHub上,可以免费使用,研究,修改和重新分发高级GUI库,在" https://github.com/rigordo959/tsWxGTUI_PyVx_Repository"。

它在Python 2x& 3x使用" curses"低级GUI包。 Linux nCurses实现通常取代了最初的Unix Curses实现。

您的应用程序可以使用像素模式" wxPython"的字符模式子集进行编程。高级GUI API。它支持带键盘和鼠标输入的显示器以及各种终端仿真器,包括彩色xterms(8色,64色对,16色,256色对)和非彩色vt100 / vt220。

Curses允许您通过在文本之前插入属性(用于颜色,下划线,粗体,反向等)令牌来着色文本字符串,并在文本之后恢复前一个属性。例如:

{{1}}

答案 2 :(得分:0)

" culour"正是这样做的python模块。

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

import culour
culour.addstr(window, colored_string)

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