我正在使用Python编写一个程序,使用标准库中的curses
模块。
如果无法使用我指定的RGB三元组自定义颜色,我希望我的程序能够直接退出。
因此,我有一些起始代码,如下所示:
import curses
def main(stdscr):
if not curses.can_change_color():
raise Exception('Cannot change color')
curses.init_color(curses.COLOR_BLACK, 999, 0, 0)
curses.init_pair(1, curses.COLOR_BLACK, curses.COLOR_WHITE)
curses.init_pair(2, curses.COLOR_WHITE, curses.COLOR_BLACK)
stdscr.addstr('hello', curses.color_pair(1))
stdscr.addstr(' world', curses.color_pair(2))
stdscr.getch()
curses.wrapper(main)
我得到的结果是:
我期望黑色被替换为红色。
我是否误解了文档?我如何让curses
支持我想使用的自定义RGB颜色?或者至少告诉我终端不支持它?
curses的文档似乎表明,如果失败,它会返回一个错误,并且CPython源代码似乎非常忠实地传播curses错误。
如果有关系的话,我正在OS X 10.11上测试Python3,我是用Homebrew安装的。但是我在OS X的内置Python解释器上也得到了同样的效果。
编辑:
稍微修改了示例代码以显示颜色内容:
import curses
def main(stdscr):
if not curses.can_change_color():
raise Exception('Cannot change color')
stdscr.addstr(1, 0, repr(curses.color_content(curses.COLOR_BLACK)))
curses.init_color(curses.COLOR_BLACK, 999, 0, 0)
curses.init_pair(1, curses.COLOR_BLACK, curses.COLOR_WHITE)
curses.init_pair(2, curses.COLOR_WHITE, curses.COLOR_BLACK)
stdscr.addstr(0, 0, 'hello', curses.color_pair(1))
stdscr.addstr(' world', curses.color_pair(2))
stdscr.addstr(2, 0, repr(curses.color_content(curses.COLOR_BLACK)))
stdscr.getch()
curses.wrapper(main)
这次的结果是:
curses.color_content
检查前后吗? - Jongwarecurses
现在只是ncurses的一个包装器,后者更加强大。 - Ignacio Vazquez-AbramsTERM
,但我的已经设置为TERM=xterm-256color
,但它不起作用。 - Jongware