I wanted to be able to change the background screen color of a terminal window using curses. My weak Google-Foo did not turn up a clear example of how to do this despite much searching. The two _obvious_curses methods to attempt this seemed to be window.bkgdset(ch, attr) to initially set a window's background attributes and window.bkgd(ch, attr) to change them to new values. The thing that has puzzled me is that "ch" is a mandatory parameter to supply. So after a variety of experimental efforts I came up with the following approach which seems to do what I want to do -- just change the terminal's background color at will. But since I did *not* locate any clear examples online on how to do this, I cannot help but wonder if there is an easier approach to do what I want to do?
My code follows. As always I am open to any constructive criticism even if it is off this email's topic, though this code is not meant to be a polished product. #!/usr/bin/env python3 import curses def start_cli(stdscr): max_height, max_width = stdscr.getmaxyx() curses.init_pair(1, curses.COLOR_BLACK, curses.COLOR_CYAN) PAIR_BLACK_ON_CYAN = curses.color_pair(1) stdscr.clear() stdscr.bkgdset(' ', PAIR_BLACK_ON_CYAN) # Fill screen with spaces to color screen background: for y in range(max_height): try: stdscr.addstr(y, 0, ' ' * max_width) except curses.error as error: if y == max_height - 1: # Ignore error from writing to lower right-hand screen corner: pass else: raise error # Make cursor invisible to ensure *entire* screen is colored: curses.curs_set(0) stdscr.refresh() # Pause program until user presses key: stdscr.getkey() # Change background screen color: curses.init_pair(2, curses.COLOR_BLACK, curses.COLOR_RED) PAIR_BLACK_ON_RED = curses.color_pair(2) change_bkgd_color(stdscr, PAIR_BLACK_ON_RED) stdscr.getkey() def change_bkgd_color(window_obj, color_pair): window_obj.bkgd(' ', color_pair) if __name__ == '__main__': input("Press ENTER to change screen to first color, then press" " any key for next color change until the program exits.") curses.wrapper(start_cli) -- boB _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor