gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 07:55:16 25 4
gpt4 key购买 nike

有什么方法可以在 之前为字符串中的单词着色,甚至 addstr 到 curses 屏幕?我试图通过将诸如 "\033[31m" (然后是 "\033[0m" )之类的东西连接到字符串,但 curses 不识别它,只是吐出类似这样的内容:this is a ^[[31mlink^[[0m。如果到目前为止您还不明白,这可能会有所帮助:

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

谢谢。

最佳答案

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

在 curses 的 C 接口(interface)中,这可以通过将属性与 chtype 值进行“或”运算(或使用 setcchar 打包 cchar_t)来按字符完成。或者,可以在窗口上设置一个属性,并使用该属性和 addstr 编写一个字符串。 .

Python 为 addstr 提供(根据其 documentation)一个不同接口(interface)。本节 Attributes and Color 显示了这个例子:

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

添加一个反向视频字符串,这样:

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

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

Python 更改窗口属性的接口(interface)更类似于 C 接口(interface):它提供了 attrset , attron, bkgd其文档中显示的方法 Window Objects .

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

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

关于python - 在使用 curses 将字符串绘制到屏幕之前,如何为字符串的某些部分着色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30032735/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com