回答问题

我无法让终端调色板与诅咒一起使用。

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-terminal 调色板中确实有更多颜色。我如何在 curses 中访问它们?

Answers

以下是我在自己的电脑(Ubuntu 14.04,python 3)上通过实验得出的。

  • 有256种颜色(由前8位定义)。

  • 其他位用于附加属性,例如突出显示。

  • 将数字 -1 作为颜色传递回默认的背景和前景色。

  • 颜色对 0 (mod 256) 固定在 (-1, -1)。

  • 颜色 0 到 15 是终端调色板颜色。

考虑以下测试代码。将此添加到您的.bashrc:

# Set proper $TERM if we are running gnome-terminal
if [ "$COLORTERM" == "gnome-terminal" ]
then
    TERM=xterm-256color
fi

把它放在一个python文件中并运行它。

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)
    try:
        for i in range(0, 255):
            stdscr.addstr(str(i), curses.color_pair(i))
    except curses.ERR:
        # End of screen reached
        pass
    stdscr.getch()

curses.wrapper(main)

运行它将产生以下输出。

截图

如您所见,颜色对 1-16 是前景色的终端调色板。

Logo

学AI,认准AI Studio!GPU算力,限时免费领,邀请好友解锁更多惊喜福利 >>>

更多推荐