baum
baum

Reputation: 1029

Python - Read User Input while Printing Output

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.

Example:

[stuff prints here]
hello
warning: the time is 27:64

Please 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:

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.

Thanks.

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.

Upvotes: 11

Views: 4451

Answers (1)

py_script
py_script

Reputation: 830

The classic approach to such problem would be:

  • Have a server module listening to incoming requests, and printing the input
  • Have a threaded client module(forked in to 2 threads, in our example).
  • The clients will use be able to behave simultaneously, by using the threading library of Python.

Upvotes: 1

Related Questions