Python诅咒不显示颜色,而C ncurses工作得很好
我似乎无法让Python curses模块显示颜色,而ncurses C库工作得很好。下面是一个简单的脚本:Python诅咒不显示颜色,而C ncurses工作得很好,python,ncurses,curses,python-curses,Python,Ncurses,Curses,Python Curses,我似乎无法让Python curses模块显示颜色,而ncurses C库工作得很好。下面是一个简单的脚本: import curses def main(stdscr): if not curses.has_colors(): raise stdscr.addstr("Hello world\n", curses.color_pair(curses.COLOR_RED)) stdscr.addstr("Press any key to exit.\n") stdscr.re
import curses
def main(stdscr):
if not curses.has_colors(): raise
stdscr.addstr("Hello world\n", curses.color_pair(curses.COLOR_RED))
stdscr.addstr("Press any key to exit.\n")
stdscr.refresh()
while stdscr.getch() == -1: pass
if __name__ == '__main__':
curses.wrapper(main)
我只能看到“按任意键退出”。我知道“Hello world”是因为新行而写的,但我看不到文本。我尝试了各种颜色对,但只有0,即白色,起作用
不使用包装器,即
stdscr = curses.initscr()
curses.start_color()
main(stdscr)
curses.endwin()
没有帮助
我在XTerm(312)上测试了它,XTerm(312)有一个黑色背景,而urxvt v9.20有一个白色背景。我在Debian jessie上,使用bash和Python 2.7
我运行了一个使用ncurses的旧C脚本,它可以很好地显示颜色,所以我认为要么我做错了什么,要么python库出了什么问题。我下载了一个名为colortest python的软件包,它也可以显示颜色,尽管它不使用诅咒(仅用于测试终端是否能够显示颜色)。您需要在开始时添加以下行以初始化颜色
curses.start_color()
curses.use_default_colors()
然后需要使用初始化颜色对
curses.init_pair(1, curses.COLOR_RED, curses.COLOR_WHITE)
例如,这会将第一对初始化为红色前景和白色背景。
然后使用传递的int值作为函数中的第一个参数,而不是curses.COLORS in curses.color\u pair()中的curses.COLORS,这些颜色将正确显示。没有帮助。其他颜色对似乎不适用于输出curses.has_colors()?哦,现在我明白了,你不直接使用颜色,你需要声明一个带有curses.init_对的颜色对(1,curses.color_RED,curses.color_WHITE),然后使用curses.color_对(1)中第一个参数中使用的int值。这样应该可以解决问题,但这些颜色对不应该由包装器初始化吗?无论如何,如果你愿意,你可以加上它作为答案,这样我就可以接受。看起来你也得自己做