0

次のコードを見つけました。

import threading
from time import sleep
import os
class test:
    def __init__(self):
        self.running = True
    def foo(self):
        while(self.running):
            os.system( [ 'clear', 'cls' ][ os.name == 'nt' ] )
            sleep(2)
    def getUserInput(self):
        x = ''
        while(x != 'e'):
            x = raw_input('Enter value: ')
        self.running = False
    def go(self):
        th1 = threading.Thread(target=self.foo)
        th2 = threading.Thread(target=self.getUserInput)
        th1.start()
        th2.start()
t = test()
t.go()

しかし、画面をクリアするたびに、私が入力したものを含め、すべてがクリアされます。画面をクリアする必要がありますが、入力できますが、画面がクリアされても入力した内容がクリアされません。2 秒ごとに画面をクリアし、いつでも入力を受け入れる必要があります。

4

1 に答える 1

0

cls のようなツールは raw_input() が他の場所で行われていることを認識していないため、画面のコンテンツの一部を保持できないため、あなたが取っているアプローチは機能しません。必要なのは、それを調整することです。私は2つの可能なアプローチを見ます:

  • 入力を待っている間は画面をクリアしないでください。つまり、ユーザーからの入力を求めている間、待機するようにクリーンアップ スレッドに通知するだけです。
  • 低レベルのライブラリを使用してスクリーン バッファにアクセスし、プロンプトを保持できるようにします。Pythonには、それを可能にする「curses」実装があると思います。

ただし、すべきことは、一歩下がって、達成したいことをより抽象的なレベルで説明することです。あなたはここで、私見が最初から欠陥のある特定の解決策を達成する方法を尋ねています。代わりに最初の目標を説明すれば、誰かがより効果的なアプローチを考え出すでしょう。

于 2013-03-26T05:18:18.977 に答える