微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何创建一个计时器,该计时器对在python中按下某个键的时间进行计时?

如何解决如何创建一个计时器,该计时器对在python中按下某个键的时间进行计时?

keys_pressed=[]    
def keytracker():

 def on_press(key):
     global start,stop
     start=time.time()
     print(key)
     keys_pressed.append('t')
 def on_release(key):
     stop = time.time()
     print(stop-start)
     if key==Key.esc:
         return False
 with Listener(on_press=on_press,on_release=on_release) as listener:
     listener.join()

是否可以在按下某个键时启动计时器,然后在释放该键时打印没有time.sleep()的情况下按下该键的时间?如果是这样,是否可以同时使用多个键并打印每个键按下了多长时间?例如:如果我按住“ w” 10秒钟,然后又按住“ d” 5秒钟(按住w的同时),我可以确定每个键被按下多长时间,然后将时间计入列表或元组中以供使用以后的数字?

解决方法

对于计时器,主要要记住的是,当按下某个键时,该键会重复并重新触发该键按下事件。要存储每个键的开始时间,可以使用字典。在按下键事件中,检查词典中的键,如果键不在词典中,则设置键时间。在按键向上事件中,打印时差并从字典中删除按键。

这是更新的代码:

from pynput.keyboard import Key,Listener
import time

keys_pressed={}  # dictionary of keys currently pressed

def on_press(key): # gets re-called a key repeats
     if key not in keys_pressed:  # if not repeat event
         keys_pressed[key] = time.time() # add key and start time
         
def on_release(key):
     print (key,time.time() - keys_pressed[key])  # time pressed
     del keys_pressed[key] # remove key from active list
     if key==Key.esc:
         return False
         
with Listener(on_press=on_press,on_release=on_release) as listener:
     listener.join()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。