Propagate "quit" event, do not just terminate application. Resize: flag widgets to be resized, do resizes only once before draw. Draw: flag widgets to be redrawn, do not draw everything on any event.
#!/usr/bin/python
# coding=UTF-8
import curses
import locale
locale.setlocale(locale.LC_ALL, "")
def doStuff(stdscr):
message = "Press 'q' to quit.\n"
stdscr.addstr(0, 0, message, 0)
while True:
c = stdscr.getkey() # pauses until a key's hit
if c == 'q':
break
stdscr.addstr('%s %r\n' % (c, c))
curses.wrapper(doStuff)