在这个简单的程序中(用 C 编写)
#include <ncurses.h>
#include <string.h>
int main()
{
initscr();
printw("line 1\n");
printw("line 2\n");
start_color();
init_pair(1, COLOR_RED, COLOR_BLACK);
printw("line 3");
getch();
endwin();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
黑色背景上的红色文本打印在屏幕上。但是当我运行程序时,背景比终端的黑色背景稍亮,在Linux(Gnome终端)中。
我不想在终端的默认黑色上设置背景颜色:我想保留终端背景并将背景实际设置ncurses为透明。
有没有办法做到这一点?
注意:我试图按照这个问题中的建议将该函数放在use_default_colors();后面,但它没有用。start_color();
在python中使用curses,您可以使用以下方法轻松使用终端的默认颜色方案:
curses.use_default_colors()
Run Code Online (Sandbox Code Playgroud)
但是,一旦尝试重新着色任何字符,使用颜色对就必须声明背景颜色:
curses.init_pair(1, curses.COLOR_RED, curses.COLOR_BLACK)
Run Code Online (Sandbox Code Playgroud)
我真的不想改变默认的背景,但我想改变前景.
有没有办法获得默认的背景颜色?或只改变前景色?
我知道我可以使用ANSI转义码来调整前景色,但ANSI代码与curses不兼容,我宁愿使用curses而不是重写ANSI代码中的所有内容.