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

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

4

1 回答 1

0

您采用的方法行不通,因为 cls 之类的工具不知道其他地方发生的 raw_input() 之类的事情,因此它们无法保留某些屏幕内容。你需要的是协调它。我看到两种可能的方法:

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

不过,您应该做的是退后一步,在更抽象的层面上描述您想要实现的目标。您在这里问如何实现某种解决方案,恕我直言,从一开始就有缺陷。如果您改为描述最初的目标,那么有人会想出一种效果更好的方法。

于 2013-03-26T05:18:18.977 回答