首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何将终端调色板与curses一起使用

如何将终端调色板与curses一起使用
EN

Stack Overflow用户
提问于 2013-09-01 02:36:30
回答 6查看 36.1K关注 0票数 34

我不能让终端调色板与咒语一起工作。

代码语言:javascript
复制
import curses

def main(stdscr):
    curses.use_default_colors()
    for i in range(0,7):
        stdscr.addstr("Hello", curses.color_pair(i))
    stdscr.getch()

curses.wrapper(main)

此python脚本将显示以下屏幕:

但是,我的gnome终端调色板中有更多的颜色。我如何在咒语中访问它们?

EN

回答 6

Stack Overflow用户

发布于 2013-09-08 21:27:59

终端“调色板”由终端应用程序自己设置,以将默认的curses颜色映射到特定于应用程序的“解释”。如果您使用红色,终端可以选择将其显示为酒红色或樱桃红色,或者如果用户愿意,则显示完全不同的内容。

换句话说,只需使用诅咒颜色(结合或不结合明亮或闪烁修饰符),事情应该会正常工作。

我认为curses.use_default_colors()调用只是让透明度变得可用;它是对use_default_colors() ncurses API function的直接调用。ncurses颜色是基于调色板的;您需要使用curses.init_pair() calls设置您自己的每对编号的颜色属性,然后使用curses.color_pair()从调色板中选择一个颜色对以显示具有该特定对的文本;或者直接为给定的addstr()调用构建文本属性。

票数 16
EN

Stack Overflow用户

发布于 2013-09-08 20:08:45

我现在把这几行放在我的脚本前面。

代码语言:javascript
复制
curses.use_default_colors()
for i in range(0, curses.COLORS):
    curses.init_pair(i, i, -1);

我不知道这是不是最好的解决方案,但至少它产生了一些与终端调色板一致的颜色对。

票数 11
EN

Stack Overflow用户

发布于 2017-01-07 01:41:46

我没有将此作为评论提交给Chiel ten Brinke的优秀答案的代表点,所以我将在这里提供他的颜色脚本的一个更有用的版本:

代码语言:javascript
复制
import curses
def main(stdscr):
    curses.start_color()
    curses.use_default_colors()
    for i in range(0, curses.COLORS):
        curses.init_pair(i + 1, i, -1)
    stdscr.addstr(0, 0, '{0} colors available'.format(curses.COLORS))
    maxy, maxx = stdscr.getmaxyx()
    maxx = maxx - maxx % 5
    x = 0
    y = 1
    try:
        for i in range(0, curses.COLORS):
            stdscr.addstr(y, x, '{0:5}'.format(i), curses.color_pair(i))
            x = (x + 5) % maxx
            if x == 0:
                y += 1
    except curses.ERR:
        pass
    stdscr.getch()
curses.wrapper(main)
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18551558

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档