I'm trying to write a (command line) python program that will accept input from the user while still printing data above it. I am trying to make a chat program.
[stuff prints here]hellowarning: the time is 27:64Please enter your input: asdf
So I have typed the asdf, but while I am typing, the output above continues to update. If I want, I can continue to type while the output is being generated. Then if I press enter, something else happens. The input field should always stay below the the outputted text; if more text is displayed, the input field gets pushed down (but its contents remain in place).
My thoughts were:
This needs to be some sort of non-blocking read...
...or maybe threading? One thread for input, one for output.
Might I need to do some cursor manipulation (i.e. moving the cursor upwards, printing output, returning cursor to user input area)?
I realize that a GUI would be much easier to do. I'll probably end up just doing this with tkinter. But I was nevertheless wondering if this sort of thing is possible in python on the command line.
EDIT: I forgot to mention that I do know how to erase text with carriage returns (\r). The problem really is making sure that when I erase the line, I don't clear the user input: So if a new line comes up while I am typing, I don't want the input I have so far to be erased.