Search code examples
pythonpython-2.7ncursescurses

Python: curses and the default black color


Why is this piece of python code not producing a normal black background color?

import curses

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

I really don't get it. I played around with many things (color_pair, pair_number, init_pair, etc). This is really not black.

I'm using the default ubuntu gnome-terminal. (But afaik it doesn't make a difference).

curses - not black


Solution

  • Unless you manually specify the colors, curses is going to respect your terminals color palette. Most terminals will use your settings from a .Xresources or .Xdefaults file (not sure about gnome-terminal)

    However if you want to manually define your colors. Use curses.init_color, this doesn't work on all terminals, more info on its usage in the python curses documentation. Do remember to reset the colors before quitting (curses.wrapper should do this for you).

    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()