python - 延迟后如何重置键盘输入?
问题描述
python中的简单“输入”:
code = input("Entrer your code...")
processCode(code)
我需要在没有屏幕的 USB 键盘上向用户询问密码(因此用户看不到他在输入什么)。这里的文字只是为了一些测试。当然,发送是由Enter密钥验证的。
为了确保当用户开始输入并发送他的代码时输入总是空白的,我需要在这个输入中添加一个条件。我需要某种时间计数器,它在输入每个字符后开始,如果Enter10 秒内没有按下键,输入将自动重置。
解决方案
这是一个近似于您的问题的代码示例。您可以改进它或从中汲取灵感:
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)))
推荐阅读
- android - 我的 Android 应用程序中的 Facebook 登录在尝试登录时返回操作已取消
- r - 如何解释这些引导置信度结果
- c# - 如何抑制多次按钮点击?
- recursion - 一个关于使用海龟和递归用python制作分形的问题
- angular - Angular cdkDrag 边界父组件
- sql - SQL“不正确”的列计算
- autodesk-forge - 有没有办法使用设计自动化处理用户本地(非 BIM360)文件,并且仍然可以获得用户选择之类的东西?
- gradle - 在 PluginManager 中使用基本 Spock 规范和 JenkinsRule 时遇到问题
- javascript - 如何向 https 获取请求添加参数?
- python - 数据框 to_csv - 强制使用相同的分隔符