如何在接受未被删除和回显的输入时打印到屏幕

时间:2013-03-26 03:29:33

标签: python multithreading input output simultaneous

我找到了以下代码:

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()

但每次清除屏幕时,它都会清除所有内容,包括我键入的内容。我需要清除屏幕的东西,但是让我输入,当屏幕清除时我输入的内容不清晰。我需要屏幕每两秒清除一次并接受输入。

1 个答案:

答案 0 :(得分:0)

你正在采取的方法是行不通的,因为像cls这样的工具不知道像其他地方发生的raw_input()这样的事情,所以他们无法保留一些屏幕内容。你需要的是协调它。我看到两种可能的方法:

  • 在等待输入时不要清除屏幕,即只是在要求用户输入时向清理线程发出信号等待。
  • 使用低级库访问screenbuffer,允许您保留提示。我认为Python有“curses”实现,应该允许你这样做。

你应该做的是退后一步,在更抽象的层面上描述你想要达到的目标。你在这里问如何实现从一开始就有瑕疵的某种解决方案。如果您描述了最初的目标,那么有人会提出一种更好的方法。