【教程&整活】python第三方库pynput全局键盘监听+demo“ikun键盘”

文章介绍了如何使用pynput库来实现全局键盘监听,包括按下和释放按键的处理,特别是对特殊按键和组合键的监听。通过Listener类可以捕获键盘事件,通过GlobalHotkey类可以设置热键。此外,文中还展示了结合playsound模块播放音频的示例,创建了一个简单的ikun键盘程序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本篇文章主要讲pynput的键盘监听,以及一个demo“ikun键盘程序”

1. 全局键盘监听

1.1 pynput.keyboard.Listener

这是pynput的子模块keyboard中的一个类,keyboard子模块都是关于键盘操作和监听的

Listener类有两个重要的构造参数,也是我们使用最多的:

Listener(on_press=按下按键时触发的函数,on_release=松开按键时触发的函数)

一般在程序中我们这么使用:

with keyboard.Listener(on_press=按下按键触发的函数,on_release=松开按键触发的函数) as listener:
        listener.join()

按下或者松开按键所触发的函数还有一个参数用来接收按键信息,我一般用key作为参数名

listener.join()是线程阻塞函数,它会让这块代码所在的函数始终监听键盘,所以如果有其他需要阻塞线程或者使用主循环的函数(比如rkinter的mainloop()函数)应该使用多线程

举个例子:

from pynput import keyboard#首先导入模块

def key_press(key):#定义按键按下时触发的函数
    print("按键被按下了")

def key_release(key):
    print("按键被松开了")

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

1.2 获取被按下或者被松开的按键

此时被的触发函数接收的参数key派上了用途。如果是普通按键(就是字母或数字之类),key会有一个叫做char的属性,char本身是一个python字符串,我们可以判断字符串从而得知按下或者松开了哪个键。

举个例子:

from pynput import keyboard#首先导入模块

def key_press(key):#定义按键按下时触发的函数
    print(f"按键{key.char}被按下了")

def key_release(key):
    print(f"按键{key.char}被松开了")

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

但是还有特殊按键的存在呢!比如说ctrl、alt、shift等,如果按下或松开这种特殊按键,传入的key可就不一样了,它没有char属性,所以会报错AttributeError: 'Key' object has no attribute 'char'

于是我们可以用try…except语句,如果程

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值