首页 > Python 笔记 > Python如何接收键盘按键

Python如何接收键盘按键

更新:
使用标准库

内置Pythoninput()该函数可以通过键盘获得用户输入的文本数据。这是键盘输入最简单的接收方式,适合简单的命令行程序,收到整个文本。

user_input = input("请输入内容:")
print("你输入的内容是:", user_input)
利用第三方库实现实时按键监控。

对需要实时捕捉按钮的场景,可以使用第三方库,例如pynput。这能监控键盘事件,并做出相应的反应。

from pynput.keyboard import Key, Listener

def on_press(key):
    try:
        print(f'字母键 {key.char} 被按下')
    except AttributeError:
        print(f'特殊键 {key} 被按下')

def on_release(key):
    print(f'{key} 被释放')
    if key == Key.esc:
        # 停止监听
        return False

# 启动监听
with Listener(on_press=on_press, on_release=on_release) as listener:
    listener.join()

我们在上述代码中定义了on_press()函数用于处理按键按下的事件,on_release()函数处理按键释放的事件。Listener对象启动并加入主线程,监控实时键盘事件。

按键信息的分析

使用pynput.keyboard.KeyEscc等特殊按钮可以捕捉到,、Control、Shift等。对一般的字符键,key.char获取。

from pynput.keyboard import Key, KeyCode, Listener

def on_press(key):
    if key == Key.esc:
        print("Escape 键被按下,退出程序")
        return False  # 停止监听
    elif key == Key.space:
        print(“空格键被按下”)
    elif isinstance(key, KeyCode):
        print("按键 {} 被按下".format(key.char))

with Listener(on_press=on_press) as listener:
    listener.join()

在这个代码中,我们可以处理和区分按下事件的特殊键和普通字符键,同时演示如何返回。False停止监听。

获取按钮的修饰键状态

pynput库也允许我们知道按键时的修饰键(例如Shift)、状态,如Ctrl等。

from pynput.keyboard import Key, Listener, Controller

keyboard = Controller()

def on_press(key):
    if key == Key.shift_l:
        print(“按下左Shift键”)
    if key == Key.ctrl_l:
        print(“按下左Ctrl键”)
    if key == Key.cmd:
        print("Command按下Windows键")

    # 模拟按键
    if key == Key.f1:
        print("F1 被按下, 模拟按键A...")
        # 按A键模拟模拟
        keyboard.press('a')
        keyboard.release('a')

with Listener(on_press=on_press) as listener:
    listener.join()

上述代码不仅处理了修饰键的状态,而且演示了如何使用。pynput.keyboard.Controller模拟键盘按钮。

检测热键组合

对需要实现热键功能的场景,可监控组合键并执行相应的功能。

from pynput import keyboard

current_keys = set()

def on_press(key):
    current_keys.add(key)
    if all(k in current_keys for k in [keyboard.Key.ctrl, keyboard.KeyCode(char='c')]):
        print("Ctrl+C 按下“热键”)
        # 这里可以添加相应的处理处理处理处理处理

def on_release(key):
    try:
        current_keys.remove(key)
    except KeyError:
        pass

with keyboard.Listener(on_press=on_press, on_release=on_release) as listener:
    listener.join()

在这里,我们使用了一个集合。current_keys跟踪当前按下的键,然后检查组合键是否在这个集合中,以确定热键是否被激活。

注意

由于操作系统的不同,键盘键的接收和处理可能会有所不同。特别是在使用中pynput等待第三方库时,应查阅相应库的文件,以确认其在当前环境下的兼容性和限制性。

还需要注意的是,在使用监听器时,应在合适的语境中使用可能影响系统的其他应用程序或意外行为,以确保符合用户的期望。

文章目录
顶部