【问题标题】:How to reset input from keyboard after delay?延迟后如何重置键盘输入?
【发布时间】:2020-11-04 21:53:44
【问题描述】:

python中的简单“输入”:

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

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

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

【问题讨论】:

标签: python input


【解决方案1】:

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

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

【讨论】:

  • 不使用'keyboard'库有什么建议吗?
猜你喜欢
  • 2012-12-27
  • 2011-02-08
  • 2015-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-28
相关资源
最近更新 更多