无法在Windows上的curses中更改颜色

时间:2014-10-19 12:33:42

标签: python windows colors ncurses curses

我在Windows上使用curses:http://www.lfd.uci.edu/~gohlke/pythonlibs/#curses使用32位构建Python 3.4

到目前为止,除了颜色以外,它一直运作良好。它报告它可以改变颜色,但是当试图实际改变颜色时,没有任何反应。这是对Windows的curses或我的代码问题的限制吗?

import curses

def main(stdscr):
    curses.start_color()
    stdscr.addstr("Can Change Color? %s\n" % str(curses.can_change_color()))
    for i in range(0, curses.COLORS):
        curses.init_color(i, 1000, 0, 0)
        curses.init_pair(i + 1, i, 0)
    try:
        for i in range(0, 255):
            stdscr.addstr(str(i), curses.color_pair(i))
    except curses.ERR:
        pass
    stdscr.getch()

curses.wrapper(main)

在此,它报告它可以改变颜色,但是当试图将每种颜色设置为红色(作为测试)时,它们都保持默认。

1 个答案:

答案 0 :(得分:0)

我知道自从你提出这个问题已经有一段时间了,但是因为这是谷歌搜索的第一个点击之一,如#py; curses颜色问题",我想我也可以回答这个问题

linked answer包含您正在寻找的确切解决方案。您只是不直接致电curses.color_pair(i),但您必须先定义这些对:

stdscr = curses.initscr()
curses.start_color()
curses.use_default_colors()
curses.init_pair(1, curses.COLOR_RED, curses.COLOR_WHITE)
stdscr.addstr( "Pretty text", curses.color_pair(1) )
stdscr.refresh()

上面的代码将显示单词" Pretty text"红色和白色背景(但请确保控制台首先调用curses.has_colors()来支持着色。