The solution is to use screen.refresh()
.
import curses
import time
screen = curses.initscr()
curses.noecho()
curses.curs_set(0)
screen.keypad(1)
screen.nodelay(1)
i = 0
while True:
i += 1
event = screen.getch()
screen.clear()
if event == ord("q"):
break
elif event == curses.KEY_UP:
screen.addstr("The User Pressed UP", curses.A_REVERSE)
screen.refresh()
time.sleep(2)
elif event == curses.KEY_DOWN:
screen.addstr("The User Pressed DOWN", curses.A_BLINK)
screen.refresh()
time.sleep(2)
else:
screen.addstr("Loop {0}".format(i))
curses.endwin()