如何在Python的curses中获得更多的颜色?

6

我现在正在为学校的一个项目工作,使用的是curses。但是,我对颜色的限制有些失望。colorama模块有更多的颜色,并且它们可以在我的终端上工作,所以我知道我的终端能够显示很多颜色。但是,在curses中,我们只有

COLOR_BLACK
COLOR_RED
COLOR_GREEN
COLOR_YELLOW
COLOR_BLUE
COLOR_MAGENTA
COLOR_CYAN
COLOR_WHITE

如果有更多的颜色选项就太好了。

注意:Colorama提供ANSI转义代码,但不适用于Curses,所以没有捷径可走。


1
那就是终端的设计方式。感慨一下你不必使用单色监视器吧 :) 然而,现代一些终端确实支持256种颜色,并且urxvt可以在编译时选项中启用它。 - Keith
你使用的终端是什么,TERM 环境变量设置为什么? - Craig
相关内容:https://dev59.com/dmMl5IYBdhLWcg3wP1HE - chtenb
4个回答

7
在curses中,颜色只是从0curses.COLORS - 1的数字。你列出的那些只是curses提供给你的命名常量
Curses支持256种颜色,但它只会启用如果你的终端通过TERM环境变量标识自己为256色终端
尽管大多数现代终端多年来都支持256种颜色,例如Gnome终端和Xterm,但仍有许多终端不报告此类信息。
如果你使用env TERM=xterm-256color yourprogram运行程序,curses将启用256种颜色,并且只要你的终端实际上支持它,它就能正常工作!
如果它能正常工作,请更改你的终端以自动设置其适当的TERM
推荐进一步阅读:

http://blog.sanctum.geek.nz/term-strings/

http://blog.sanctum.geek.nz/256-colour-terminals/

https://unix.stackexchange.com/a/181766/4919

https://askubuntu.com/a/578798/11015


3
请注意,根据常见问题解答文件中的记录,颜色对也有限制。简单来说,在ncurses 5中最多可以使用256个颜色对,在ncurses 6中最多可以使用32767个。 - Peter Brittain

5

3
在我看来,如果你正确设置了TERM,并且使用的是Python标准库自带的curses模块,那么完全没有必要改变模块,因为它可以很好地支持256种颜色。 - MestreLion
1
3个链接中有2个已经失效。 - Z4-tier

1
在GitHub上有一个免费使用、学习、修改和重新分发的高级GUI库,位于 "https://github.com/rigordo959/tsWxGTUI_PyVx_Repository"。

使用"curses"低级GUI包实现了Python 2x和3x版本。

你的应用程序可以使用像素模式“wxPython”高级GUI API 的字符模式子集进行编程。它支持带有键盘和鼠标输入的显示器以及各种终端仿真器,包括彩色 xterms(8 色与 64 色对和 16 色与 256 色对)和非彩色 vt100/vt220。

它包括可以配置多达256个curses颜色的Python模块。但是,curses不能处理超过256个颜色对,这意味着如果应用程序需要处理256个颜色对以显示或隐藏文本,则最多只能使用16种颜色。


-1

Fabulous 包提供了 256 种颜色的支持,但它没有与 ncurses 连接。尽管如此,我相信你可以混合使用这两种。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接