6

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

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

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

4

3 回答 3

4

有一个“culour”python 模块正是这样做的。

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

import culour
culour.addstr(window, colored_string)

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

于 2016-02-07T00:18:00.717 回答
2

这已经被问过好几次了,答案都是一样的:你可以写一个解析器来做这件事。相关讨论:

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

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

在 GitHub 上有一个免费使用、学习、修改和重新分发高级 GUI 库,位于“ https://github.com/rigordo959/tsWxGTUI_PyVx_Repository ”。

它使用“curses”低级 GUI 包在 Python 2x 和 3x 中实现。Linux nCurses 实现通常取代了原始的 Unix Curses 实现。

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

Curses 使您能够通过在文本之前插入一个属性(用于颜色、下划线、粗体、反转等)标记来为文本字符串着色,并在文本之后插入一个用于恢复前一个属性的标记。例如:

sampleWindow.attron(curses.A_REVERSE | 
                    curses.color_pair(color_pair_number))
sampleWindow.addstr(begin_y + 3,
                    begin_x + 48,
                    '        ')
sampleWindow.attroff(curses.A_REVERSE |
                     curses.color_pair(color_pair_number))
于 2015-09-11T15:08:39.213 回答