From the official curses documentation page it's definition is:
The curses module provides an interface to the curses library, the de-facto standard for portable advanced terminal handling.
You said you wanted to write a typing training program, well I think the best solution is to use the curses
library for such task.
On UNIX systems it comes with the default installation of python, and if you are targeting windows systems I have found windows-curses to add support greatly.
Basically you can find a HOWTO guide in this page from the official docs.
Here's an example usage the creates a textbox widget
The curses.textpad module should be very useful for you.
import curses
from curses import wrapper
from curses.textpad import Textbox, rectangle
def main(stdscr):
stdscr.addstr(0, 0, "Enter IM message: (hit Ctrl-G to send)")
editwin = curses.newwin(5,30, 2,1)
rectangle(stdscr, 1,0, 1+5+1, 1+30+1)
stdscr.refresh()
box = Textbox(editwin)
# Let the user edit until Ctrl-G is struck.
box.edit()
# Get resulting contents
message = box.gather()
print(message)
if __name__ == '__main__':
wrapper(main)
Here's what it looks like using the windows-curses
module

You can do many things using this library, I suggest you go on and read the docs on the links I have provided.