Python: curses与默认黑色

3 投票
2 回答
6336 浏览
提问于 2025-04-17 13:36

为什么这段 Python 代码没有显示正常的 黑色 背景呢?

import curses

def func(stdscr):      
    c = stdscr.getkey()
curses.wrapper(func)   

我真的搞不懂。我尝试了很多东西(比如 color_pairpair_numberinit_pair 等等)。结果真的不是黑色。

我使用的是默认的 Ubuntu Gnome 终端。(但据我所知,这应该没什么影响)。

curses - not black

2 个回答

4

gnome-terminal 里,有一个叫做 Palette 的设置。你可以在 `编辑个人资料 -> 颜色` 这个选项里找到它。这个调色板的设置只适用于终端应用程序。

所以在同一个对话框里,其他的设置(前景色/背景色)对应用程序来说是没用的。

4

除非你手动指定颜色,否则curses会遵循你终端的颜色设置。大多数终端会使用你在.Xresources或.Xdefaults文件中的设置(对于gnome-terminal我就不太确定了)。

不过,如果你想手动定义颜色,可以使用curses.init_color这个方法。但要注意,这个方法并不是在所有终端上都能用,关于它的使用方法可以查看python curses文档。记得在退出之前重置颜色(curses.wrapper应该会帮你处理这个)。

def func(stdscr):
    if curses.can_change_color():
        # init_color(n, r, g, b)
        # n=0 is background
        curses.init_color(0, 0, 0, 0)
    c = stdscr.getkey()

撰写回答