簡體   English   中英

如何創建一個計時器來計時在python中按下某個鍵的時間?

[英]How to create a timer that times for how long a certain key is pressed in 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),我可以計算每個鍵被按下的時間,然后將時間放在列表或元組中以供使用之后的數字?

對於定時器,要記住的主要事情是當一個鍵被按下時,該鍵會重復並重新觸發鍵按下事件。 要存儲每個鍵的開始時間,您可以使用字典。 在key down事件中,檢查key的字典,如果key不在字典中,設置key的時間。 在 key up 事件中,打印時差並從字典中刪除 key。

這是更新后的代碼:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM