在使用curses将字符串绘制到屏幕之前,如何为字符串的部分着色?

时间:2015-05-04 14:29:53

标签: python colors curses

有没有什么方法可以在字符串之前将中的单词着色为<{1}}它到curses屏幕?我试图通过将addstr(最后是"\033[31m")之类的内容连接到字符串来在低级别执行此操作,但是curses无法识别并且只是吐出类似的内容:{ {1}}。如果您到目前为止还不了解,这可能会有所帮助:

"\033[0m"

谢谢。

1 个答案:

答案 0 :(得分:0)

否:使用curses的程序不会发送转义序列。相反,它们传递字符串和属性。 curses库将这些放在一起并发送转义序列。

在curses的C接口中,可以通过将属性OR运行到chtype值(或使用setcchar打包cchar_t)来按字符完成。或者,可以在窗口上设置属性,并使用addstr的该属性编写字符串。

Python提供(根据其documentation)与addstr不同的接口。 Attributes and Color 部分显示了此示例:

stdscr.addstr(0, 0, "Current mode: Typing mode", curses.A_REVERSE)

添加反向视频字符串,并且:

stdscr.addstr("Pretty text", curses.color_pair(1))

使用颜色对#1添加字符串。颜色对结合了前景(文本)和背景颜色。

Python更改窗口属性的界面更接近于C接口:它提供了attrsetattronbkgd方法,如Window Objects的文档所示。< / p>

作为一般指导原则,通过直接编写自己的转义序列(绕过curses库),您将无法获得良好的结果:

  • curses使用自己的输出缓冲,它可能没有连接到您的标准输出缓冲区(所以可能会以意想不到的顺序写入)
  • 如果你写了一些改变了屏幕外观的东西,那么诅咒就不会知道这一点,结果也没有用。