python - 诅咒 can_change_color() 总是返回 False

标签 python colors ncurses curses xterm

我在 Python 中编写了一个比一次性使用多一点的监控脚本,它使用 ncurses 和颜色来显示一些经常更新但几乎没有人感兴趣的值。为了提醒我注意重大变化,我进行了一些设置,以便当这些值进入有趣的领域时,文本从白底黑字变为红底白字。这在我的 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?

最佳答案

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

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

关于python - 诅咒 can_change_color() 总是返回 False,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23085308/

相关文章:

python - 如何在 PyCharm 中使用 'see'/highlight 制表符和空格来检查缩进?

vim - 如何去除vim中文本的高亮背景?

你能在 C 中同时使用 printf() 和 ncurses 函数吗?

c++ - 未初始化的两个实例之一

python - 查看字符串列表时什么更快? "In"还是 "index"?

python - pool_recycle 标志的单位是什么? [SQL炼金术]

c++ - 在不丢失 alpha 值的情况下将 QColor 转换为 QString

c - 如何使光标像 curses/C 中的文本编辑器/终端一样工作?

python - 尝试设置 cookie 但得到 TypeError : string indices must be integers, not str

c# - 根据亮度和饱和度在颜色名称前添加 pale/vivid/light/dark