当前位置: 首页 > 面试题库 >

在python中确定按键的长度

羊舌源
2023-03-14
问题内容

假设我想用python编写一个非常简单的程序来指示长按一个键。所以如果我键入并按住“j”键几分钟,我
我想写一个程序,能够显示像’的关键信息按下“j”键1.1秒。
据我所知,实现这一点的方法应该是通过检测为KEYDOWN事件和KEYUP事件添加时间戳,并使
时间戳的减法。所以检测KEYDOWN和keypup就足够了事件。有各种各样的问题和答案,所以关于检测一个单次按键或关于检测单字符输入,),两者都使用一些
格奇的形式。我已经查看了python诅咒库,并且尽我所能
密钥检测的主要形式也是以单个字符的形式获取()。但它们不检测按键的长度,它们只检测按下键。我认识到检测按键的长度是一项必要的任务游戏,所以我希望pygame有检测按键持续时间的方法。但我希望有可能使用更苗条、更直接的方法库来检测按键持续时间。


问题答案:

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.



 类似资料:
  • 问题内容: 假设我想在python中编写一个非常简单的程序,该程序指示按下键的时间。因此,如果我键入并按住片刻不放,我希望编写一个能够显示类似信息的程序。 据我了解,应该通过检测并标记KEYDOWN事件和KEYUP事件并加时间戳,并适当减去时间戳来实现。因此,检测到KEYDOWN和KEYUP事件就足够了。 关于SO的检测和按键检测或单个字符输入检测等各种各样的问题和答案,都使用某种形式的getch

  • 问题内容: 是否有可能使系统似乎已按下某个键,例如我需要使按键被按下数千次,而手动执行该操作很费时间,我想写点东西来做对我来说,我唯一了解的是Python。 更好的表达方式是,我需要模拟一个按键,IE无法捕获按键。 更多信息(按要求):我正在运行Windows XP,需要将密钥发送到另一个应用程序。 问题答案: 安装pywin32扩展。然后,您可以执行以下操作: 搜索WScript.Shell对象

  • 问题内容: 我正在用python开发一个秒表类型的程序,我想知道如何检测是否按下了一个键(例如p表示暂停,s表示停止),而我不希望它像raw_input这样等待用户输入,然后继续执行。有人知道如何在while循环中执行此操作吗? 另外,我想做这个跨平台的,但是如果那不可能,那么我的主要开发目标是linux 问题答案: 对于那些在窗户上努力寻找可行答案的人,我的是:pynput 上面的功能将打印你按

  • 本文向大家介绍Python中按值来获取指定的键,包括了Python中按值来获取指定的键的使用技巧和注意事项,需要的朋友参考一下 Python字典中的键是唯一的,但不同的键可以对应同样的值,比如说uid,可以是1001。id同样可以是1001。这样的话通过值来获取指定的键,就不止一个!而且也并不太好处理。这里同样提供两种思路来处理。 方法一: 方法二: 上面的两种方法可以很方便高效的来处理字典中按值

  • 本文向大家介绍Python中按键来获取指定的值,包括了Python中按键来获取指定的值的使用技巧和注意事项,需要的朋友参考一下 Python中按键来获取值,相对来说要容易些,毕竟只需要dict[key]就可以找到,但里面同样有个问题,如果其中的键不存在的话,会抛出异常,如果不用try...except...等异常处理机制的话,程序就会中断!这里提供两种很安全,很健壮的处理方法。  方式一: dic

  • 问题内容: 我将如何在Python中“按任意键”(或抓住菜单选项)? raw_input要求您按回车键。 Windows msvcrt具有getch()和getche()。 有使用标准库执行此操作的可移植方法吗? 问题答案: