to redraw or clear them separately. The :func:`newwin` function creates a new
window of a given size, returning the new window object. ::
- begin_x = 20 ; begin_y = 7
- height = 5 ; width = 40
+ begin_x = 20; begin_y = 7
+ height = 5; width = 40
win = curses.newwin(height, width, begin_y, begin_x)
A word about the coordinate system used in curses: coordinates are always passed
# explained in the next section
for y in range(0, 100):
for x in range(0, 100):
- try: pad.addch(y,x, ord('a') + (x*x+y*y) % 26 )
- except curses.error: pass
+ try:
+ pad.addch(y,x, ord('a') + (x*x+y*y) % 26)
+ except curses.error:
+ pass
# Displays a section of the pad in the middle of the screen
- pad.refresh( 0,0, 5,5, 20,75)
+ pad.refresh(0,0, 5,5, 20,75)
The :func:`refresh` call displays a section of the pad in the rectangle
extending from coordinate (5,5) to coordinate (20,75) on the screen; the upper
An example, which displays a line of text using color pair 1::
- stdscr.addstr( "Pretty text", curses.color_pair(1) )
+ stdscr.addstr("Pretty text", curses.color_pair(1))
stdscr.refresh()
As I said before, a color pair consists of a foreground and background color.
will change to the new colors. You can also display new text in this color
with::
- stdscr.addstr(0,0, "RED ALERT!", curses.color_pair(1) )
+ stdscr.addstr(0,0, "RED ALERT!", curses.color_pair(1))
Very fancy terminals can change the definitions of the actual colors to a given
RGB value. This lets you change color 1, which is usually red, to purple or
while 1:
c = stdscr.getch()
- if c == ord('p'): PrintDocument()
- elif c == ord('q'): break # Exit the while()
- elif c == curses.KEY_HOME: x = y = 0
+ if c == ord('p'):
+ PrintDocument()
+ elif c == ord('q'):
+ break # Exit the while()
+ elif c == curses.KEY_HOME:
+ x = y = 0
The :mod:`curses.ascii` module supplies ASCII class membership functions that
take either integer or 1-character-string arguments; these may be useful in
another demo. We can always use more of them!
The ncurses FAQ: http://invisible-island.net/ncurses/ncurses.faq.html
-