python - 定时用户输入
问题描述:
在一定的时间内我需要用户输入一些特定的句子。python - 定时用户输入
例如,用户应该写在下面句子在10秒时:
Hello! World.
但是,如果用户是无法完成那么完整的句子不管一个人写了应该被接受。所以,如果一个人只能写Hello! Wo
那么它应该被存储。
问题 - 如果用户在时间前没有按回车/回车键,则不会保存任何内容。如何克服这一点?这是我的方法 -
import time
from threading import Thread
print('Hello! World')
user = None
def check():
time.sleep(10)
if user != None:
return
print ("Too Slow")
Thread(target = check).start()
user = input("Enter above string: \n")
答
我会采取不同的方法(即不需要线程); 我会在打印“hello world”之前保存当前数据结束时间,然后比较当前时间。
from datetime import datetime, timedelta
start = datetime.now()
print("Hello world!")
if input() == "Hellow world!" and datetime.now()<=start + timedelta(seconds = 10):
#the user got it right
else:
#the user was either too slow or got it wrong
答
要做到这一点你必须用你自己的事件处理程序,当用户打他的键盘上的键,将检测到创建自己的窗口。标准input()方法甚至wxPython中的自定义textControl小部件都很酷,但一直等到用户点击Enter键。所以我不幸地认为你必须使用一些GUI库(例如wxpython,它提供了你的操作系统的本地外观和一些有用的小部件),并且自己处理事件处理。如果您宁愿实现比该GUI更长的超时时间,则可以在一个线程中运行用户输入,并立即用计时器启动第二个线程。然后编写一个处理程序,在定时器完成时终止inputThread,反之亦然。 希望我帮助:)
检查了这一点:https://*.com/questions/3523174/raw-input-in-python-without-pressing-enter –
与键盘听者尝试 – Gahan