首页 > 解决方案 > 延迟后如何重置键盘输入?

问题描述

python中的简单“输入”:

code = input("Entrer your code...")
processCode(code)

我需要在没有屏幕的 USB 键盘上向用户询问密码(因此用户看不到他在输入什么)。这里的文字只是为了一些测试。当然,发送是由Enter密钥验证的。

为了确保当用户开始输入并发送他的代码时输入总是空白的,我需要在这个输入中添加一个条件。我需要某种时间计数器,它在输入每个字符后开始,如果Enter10 秒内没有按下键,输入将自动重置。

标签: pythoninput

解决方案


这是一个近似于您的问题的代码示例。您可以改进它或从中汲取灵感:

import keyboard
import time
from threading import Thread

start_time = time.time()
saved_pwd = False
stop_thread = False


def dedupe(items):
    seen = set()
    for item in items:
        if item not in seen:
            yield item
            seen.add(item)


def count_time():
    global saved_pwd, start_time
    while True:
        lap_time = round(time.time() - start_time, 2)
        global stop_thread
        if lap_time >= 10:
            print("Please Re-enter the password")
            saved_pwd = True
            break
        elif stop_thread:
            break


password = []
Thread(target=count_time).start()
while saved_pwd is False:
    key = keyboard.read_key()
    start_time = time.time()
    if key == 'enter':
        saved_pwd = True
        stop_thread = True
    else:
        password.append(key)

print("Your pwd: ", ''.join(dedupe(password)))

推荐阅读