在 Python 中检测键击

Sahil Bhosale 2022年12月21日 2021年2月28日 Python Python Input
  1. 在 Python 中使用 Python 中的 keyboard 模块检测键击
  2. 在 Python 中使用 Python 中的 pynput 模块检测键击
在 Python 中检测键击

如果你需要访问键盘等输入设备等硬件,Python 中的一些模块可以让你的生活变得更加轻松。使用这样的模块,你可以轻松地执行你想要的任务,而无需处理系统的复杂性。

在本文中,你将学习如何使用 Python 中的模块来检测按键。在 Python 中用于检测按键的模块有很多,其中,最受欢迎和使用最广泛的两个模块是 keyboardpynput

在 Python 中使用 Python 中的 keyboard 模块检测键击

keyboard 模块允许我们完全控制键盘,并带有各种预定义的方法供我们选择。这些方法使我们更容易使用键盘,并检测用户在键盘上的物理按键。

要安装 keyboard 模块,请在命令提示符或终端内执行以下命令。

pip3 install keyboard

首先,你必须将 keyboard 模块导入到程序中。这里,我们使用 Python 中的三个方法来检测按键,分别是 read_key()is_pressed()on_press_key()

import keyboard

while True:
    if keyboard.read_key() == "p":
        print("You pressed p")
        break

while True:
    if keyboard.is_pressed("q"):
        print("You pressed q")
        break
        
keyboard.on_press_key("r", lambda _:print("You pressed r"))

输出:

You pressed p
You pressed q
You pressed r

read_key() 会读取用户在键盘上按下的键,如果是你想要的那个键,在本例中是 p,它会打印出 You pressed p 的信息。read_key() 函数返回一个字符。

is_pressed() 函数接收一个字符作为输入,如果它与用户按下的键相匹配,它将返回 True,否则返回 False

on_press_key() 需要两个参数作为输入,第一个是字符,第二个是函数。如果用户按下了与 on_press_key() 函数第一个参数指定的键相匹配的键,它只会执行你作为第二个参数传递进来的函数。

在 Python 中使用 Python 中的 pynput 模块检测键击

pynput 模块是用来检测和控制输入设备的,主要是鼠标和键盘。但在本教程中,你将只看到如何使用这个模块来检测键盘上的按键。在使用这个模块之前,你首先要用下面的命令安装它。

pip3 install pynput

要使用这个模块来检测按键,你首先要从 pynput 模块中导入 keyboard

from pynput import keyboard

def on_press(key):
    try:
        print('Alphanumeric key pressed: {0} '.format(
            key.char))
    except AttributeError:
        print('special key pressed: {0}'.format(
            key))

def on_release(key):
    print('Key released: {0}'.format(
        key))
    if key == keyboard.Key.esc:
        # Stop listener
        return False

# Collect events until released
with keyboard.Listener(
        on_press=on_press,
        on_release=on_release) as listener:
    listener.join()

输出:

Alphanumeric key pressed: a 
Key released: 'a' 
Alphanumeric key pressed: b
Key released: 'b'
special key pressed: Key.ctrl_l 
Key released: Key.ctrl_l

请注意,上面的输出可能会根据用户按下的按键而有所不同。

为了检测按键,我们定义了两个函数,on_presson_release。当用户按下键盘上的某个按键时,函数 on_press 将被执行,当用户释放该按键时,on_release 函数将被执行。

这两个函数都只是将用户按下和释放的按键打印到控制台窗口中。你可以根据自己的需求改变这两个函数的实现方式。

然后在最后,我们有一个侦听器,它将监听键盘事件,并相应地执行 on_presson_release 函数。

Sahil Bhosale avatar Sahil Bhosale avatar

Sahil is a full-stack developer who loves to build software. He likes to share his knowledge by writing technical articles and helping clients by working with them as freelance software engineer and technical writer on Upwork.

LinkedIn

相关文章 - Python Input

  • Python 中如何将用户输入读取为整数
  • 在 Python 中模拟键盘输入
  • 在 Python 中获取长度不确定的输入值
  • 在 Python 中输入多行
  • Python 3 中的 raw_input