在用诅咒将字符串绘制到屏幕上之前,如何为字符串的各个部分着色?



有什么方法可以在将单词addstr到诅咒屏幕之前为字符串中的单词着色? 我试图通过将"33[31m"(然后在末尾"33[0m")之类的东西连接到字符串来在低级别执行此操作,但 curses 没有认识到这一点,只是吐出类似的东西:this is a ^[[31mlink^[[0m. 如果您到目前为止还不明白,这可能会有所帮助:

# pseudocode
a = "this is a link"
replace "link" in a with colorRed("link")

谢谢。

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

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

Python 提供了(根据其文档)一个不同的接口来addstr属性和颜色部分显示了此示例:

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

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

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

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

Python 用于更改窗口属性的接口更接近于 C 接口:它提供了attrsetattronbkgd方法,如其窗口对象文档所示。

作为一般准则,直接编写自己的转义序列(绕过curses库)不会获得好的结果:

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

最新更新