Determine length of keypress in python

前端 未结 1 900
梦毁少年i
梦毁少年i 2020-12-09 23:13

Suppose that I want to make a very simply program in python that indicates how long a key is pressed. So if I type and hold the j key for a few moments, I am lo

相关标签:
1条回答
  • 2020-12-09 23:28

    #Using pynput module: (Best)

    You can use this code:

    from pynput import keyboard 
    import time
    
    def on_key_release(key): #what to do on key-release
        time_taken = round(time.time() - t, 2) #rounding the long decimal float
        print("The key",key," is pressed for",time_taken,'seconds')
        return False #stop detecting more key-releases
    
    def on_key_press(key): #what to do on key-press
        return False #stop detecting more key-presses
    
    with keyboard.Listener(on_press = on_key_press) as press_listener: #setting code for listening key-press
        press_listener.join()
    
    t = time.time() #reading time in sec
    
    with keyboard.Listener(on_release = on_key_release) as release_listener: #setting code for listening key-release
        release_listener.join()
    

    #Using pygame: (Good)

    import time
    import pygame
    import os
    os.environ["SDL_VIDEO_CENTERED"] = "1"
    
    screen = pygame.display.set_mode((600, 600))
    pygame.display.set_caption("Time")
    clock = pygame.time.Clock()
    
    pygame.init()
    
    clock = pygame.time.Clock()
    
    running = True       
    while running:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                running = False
                pygame.quit()
                break
            if event.type == pygame.KEYDOWN:
                # detect key 'a'
                if event.key == pygame.K_a: # key 'a'
                    t = time.time()
            if event.type == pygame.KEYUP:
                if event.key == pygame.K_a: # key 'a'
                    t = time.time() - t; t = str(t); t = t[:5]
                    print("You pressed key 'a' for",t,'seconds')
                
    
            screen.fill((255, 255, 255))
            pygame.display.update()
    
            clock.tick(40)
    

    It will only detect the keys that you will write in the code.

    Use pip install pynput to install pynput.
    Use pip install pygame to install pygame.

    0 讨论(0)
提交回复
热议问题