Curses中的can_change_color()总是返回False

2 投票
1 回答
794 浏览
提问于 2025-04-18 02:49

我写了一个简单的监控脚本,用Python编写,利用ncurses和颜色来显示一些经常更新的数值,这些数值其实很少有人关心。为了让我能注意到重要的变化,我设置了一个机制,当这些数值变得有趣时,文本的颜色会从黑底白字变成白底红字。在我的Linux系统(openSuSE 12.2)上,这个功能运行得很好,但在Solaris 10上,curses.can_change_color()总是返回False,无论我尝试了什么。在这两个平台上,我使用的是相同版本的Python(2.7.2)和ncurses(5.7)。我有几个终端模拟器可用(gnome-terminal、xterm、rxvt),它们都能把我的命令行提示符显示成红色,所以我知道它们支持颜色。我尝试将TERM设置为多个xterm变种,包括xtermc、xterm-color、rxvt和rxvt-16color。有些终端名称不在默认位置,所以我有时还需要设置TERMINFO来指向一个terminfo能力数据库。因此,我确信我想要的条目是可以找到的。

Python中的curses.can_change_color()函数其实只是ncurses库中同名例程的一个简单封装。为什么它总是返回False呢?

1 个回答

2

can_change_color() 这个函数实际上是用来检查颜色是否可以重新映射的,这个功能比较少见。它并不是用来判断颜色是否可以使用,后者是通过 init_pair() 来实现的。如果你想检查基本的颜色功能,应该使用 has_colors()。

init_color() 在支持的终端上,可以让你调整蓝色的具体色调,比如说你可以把终端显示的“蓝色”改成其他颜色。

撰写回答