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

2024-09-25 00:28:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我发现了以下代码:

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

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


Tags: testimportselfgo屏幕fooosdef
1条回答
网友
1楼 · 发布于 2024-09-25 00:28:17

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

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

但你应该做的是退一步,在更抽象的层面上描述你想要实现的目标。你在这里问如何实现一个从一开始就有缺陷的解决方案。如果你描述了最初的目标,就会有人想出一个更好的方法。在

相关问题 更多 >