簡略化するために、私はPythonでコマンドライン双方向チャットを書くつもりです。ユーザーにコマンドプロンプトでinput()
と入力してもらいたいですが、リスニングスレッドはいつでもメッセージを出力できます。デフォルトでは、これはユーザーの入力を「中断」します。このような視覚的な何か:端末に同時に出力するときにユーザーの入力をそのまま維持する
userB>Stop interuserA wrote:Hey check this out!
rupting me!
は、私が見つけることができた最も近いがないまさに、私が探しているものをほとんどですが、this answer hereだったが、それは何であると思わblessings
パッケージの方に私をポイントでした私は必要です(しかし、私はすべてのパッケージ、または純粋なANSIIの答えに満足しています)。
私が達成しようとしているのは、より上の受信出力をユーザの入力であるより上に印刷して、テキストが壊れないようにすることです。のは、ユーザーが入力しているとしましょう:
userB>Stop inter
が突然メッセージがスレッドから入ってきたが、私たちのユーザーの入力がブレーキされていません。私のスレッド理論print_incoming_message()
方法を達成するためにどのように見えるか
userA says: Ok I won't interrupt you
userB>Stop inter
この?
注:私はLinuxを使用しており、プラットフォーム間の互換性には関心がありません。
ありがとうございました。上書きする前に自分でユーザーの入力を追跡する必要があるのですか、または「現在の入力を保存する」と言う方法がありますか?つまり、まだフラッシュされていない入力を得る方法はありますか? – Juicy
入力された最後の改行から入力を追跡する必要があります。 – slezica
'get_line_buffer()'メソッドを持つ 'readline'モジュールが見つかりました。これまでのところうまくいっています!正しい方向に私を指してくれてありがとう。 https://docs.python.org/3/library/readline.html#module-readline – Juicy