字符可以以不同的方式显示。基于文本的应用程序常常以反相显示状态行,一个文本查看器可能需要突出显示某些单词。为了支持这种用法,curses 允许你为屏幕上的每个单元指定一个属性值。
属性值是一个整数,它的每一个二进制位代表一个不同的属性。你可以尝试以多种不属性位组合来显示文本,但 curses 不保证所有的组合都是有效的,或者看上去有明显不同。这一点取决于用户终端的能力,所以最稳妥的方式是只采用最常见的有效属性,见下表。
所以,为了在屏幕顶部显示一个反相的状态行,你可以这么编写:
curses 库还支持在提供了颜色功能的终端上显示颜色的功能。最常见的提供颜色的终端很可能是 Linux 控制台,采用了 xterms 配色方案。
为了使用颜色,你必须在调用完函数 后尽快调用函数 ,来初始化默认颜色集 ( 函数自动完成了这一点)。 当它完成后,如果使用中的终端支持显示颜色, 会返回真值。 (注意:curses 使用美式拼写 “color”,而不是英式/加拿大拼写 “colour”。如果你习惯了英式拼写,你需要避免自己在这些函数上拼写错误。)
curses 库维护一个有限数量的颜色对,包括一个前景(文本)色和一个背景色。你可以使用函数 获得一个颜色对对应的属性值。它可以通过按位或运算与其他属性,比如 组合。但再说明一遍,这种组合并不保证在所有终端上都有效。
一个样例,用 1 号颜色对显示一行文本:
如前所述, 颜色对由前景色和背景色组成。 函数可改变颜色对 n 的定义 为前景色 f 和背景色 b。 颜色对 0 硬编码为黑底白字,不能改变。
颜色已经被编号,并且当其激活 color 模式时 会初始化 8 种基本颜色。 它们是: 0:black, 1:red, 2:green, 3:yellow, 4:blue, 5:magenta, 6:cyan 和 7:white。 模块为这些颜色定义了相应的名称常量: , 等等。
让我们来做个综合练习。 要将颜色 1 改为红色文本白色背景,你应当调用:
当你改变一个颜色对时,任何已经使用该颜色对来显示的文本将会更改为新的颜色。 你还可以这样来显示新颜色的文本:
某些非常花哨的终端可以将实际颜色定义修改为给定的 RGB 值。 这允许你将通常为红色的 1 号颜色改成紫色或蓝色或者任何你喜欢的颜色。 不幸的是,Linux 控制台不支持此特性,所以我无法尝试它,也无法提供任何示例。 想要检查你的终端是否能做到你可以调用 ,如果有此功能则它将返回 。 如果你幸运地拥有一个如此优秀的终端,请查询你的系统的帮助页面来了解详情。
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.mushiming.com/mjsbk/11512.html