curses can_change_color()总是返回False

时间:2014-04-15 13:34:07

标签: python colors ncurses curses xterm

我在Python中编写了一个不仅仅是一次性的监控脚本,它使用ncurses和color来显示一些经常更新的值,但这些值几乎没有引起人们的兴趣。为了提醒我发生重大变化,我进行了设置,以便当这些值进入有趣的领域时,文本会从黑白变为白底红。这在我的Linux(openSuSE 12.2)框中运行良好,但在Solaris 10上,curses.can_change_color()总是返回False,无论我尝试过什么。在这两个平台上,我使用相同版本的Python(2.7.2)和ncurses(5.7)。我有很多终端模拟器可供我使用(gnome-terminal,xterm,rxvt)。所有都能够以红色显示我的shell提示符,所以我知道它们支持颜色。我已经尝试将TERM设置为许多xterm变体,包括xtermc,xterm-color,rxvt,rxvt-16color。其中一些终端名称不在默认位置,因此我偶尔也必须将TERMINFO设置为指向terminfo功能数据库。因此,我确信找到了我想要的条目。

Python curses.can_change_color()函数只是一个围绕同名的ncurses库例程的瘦包装器。为什么总是返回False?

1 个答案:

答案 0 :(得分:2)

can_change_color()实际报告是否可以通过init_color()重新映射颜色 - 这是一种不常见的功能 - 而不是是否可以通过init_pair()完全使用颜色。要检查基本颜色功能,您需要的是has_colors()。

init_color(),在它工作的终端上,让你做一些事情,比如调整所用蓝色的确切阴影 - 或者让终端的“蓝色”概念完全显示为其他东西。