python实现侦听键盘事件,将功能函数绑定到按键上

最近尝试控制台小程序,以及快捷键组合的时候需要用到侦听键盘事件的操作,然后查阅了相关的材料,发现keyboard模块比较适合我目前的需求,在这做一下自己的见解,顺便记录一下笔记。如果你有下面的问题,或者想了解python键盘有关的操作这篇文章很适合你

如何用python实现键盘监听功能

如何按一个键就能自动执行很多键

如何自动按键

如何用python实现按方向键可上下移动

python实现按一个键执行一个函数的功能

请不要用于任何非法用途,仅学习研究用,若由此产生的任何责任自行承担,与本文及本文作者无关!

目录

安装keyboard模块

按键的字符参数:

常用方法

send()

press()

release()

wait()

add_hotkey()

record()

play()

hook()

KeyboardEvent()

更多方法

End


安装keyboard模块

pip install keyboard

按键的字符参数:

字符键:
'1'
'a'
......等

控制键:
'alt'
'alt gr'
'ctrl'
'left alt'
'left ctrl'
'left shift'
'left windows'
'right alt'
'right ctrl'
'right shift'
'right windows'
'shift'
'windows'
'enter'
'esc'
'f1'
'f2'
......等

方向键:
'up'
'down'
'left'
'right'
......

组合键:
'ctrl'+'alt'+'a'
......等

利用下面的代码通过控制台按键可以获取所有按键的string串

import keyboard
def abc(x):
    print(x)

if __name__ == '__main__':
    keyboard.hook(abc)
    keyboard.wait()

执行结果(该方法也可达到键盘监听效果)

常用方法

send()

用来向OS发送快捷键事件,使得操作系统执行相关快捷指令,支持多步操作

举例:

import keyboard

keyboard.send('windows+r')
keyboard.send('windows+r,enter')

向系统发送windows+r快捷键

多步操作,向系统发送windows+r快捷键后然后再发送回车enter键

press()

按下一个热键

举例:

import keyboard

keyboard.press('a')

release()

释放一个热键,一般和press()组合用,或者直接用send()

举例:

import keyboard

keyboard.press('a')
keyboard.release('a')

wait()

用来监听当前按键是否为要求按键,如果不是则一直进行监听,直到为要求按键才会继续执行

举例:

import keyboard

print(1)
keyboard.wait('q')
print(2)
keyboard.wait('w')
print(3)

上面的代码,输出1之后进入监听状态,除非按键盘q键才会继续执行print(2)语句,不然一直处于监听键盘按键状态,不会继续执行后面的代码

add_hotkey()

用来设置按键,一般与wait()组合使用,利用wait()空值监听可以达到循环效果,函数可携带参数,带参数例子往下见record()方法的例子

举例:

import keyboard


def test1():
    print("Is 1")


def test2():
    print("Is 2")


if __name__ == '__main__':
    keyboard.add_hotkey('q',test1)
    keyboard.add_hotkey('ctrl+1',test2)
    keyboard.wait()

分别定义两个函数test1和test2

实现快捷键功能,当我们按q键的时候执行test1函数输出Is 1,当我们按组合键Ctrl+1的时候执行test2函数输出Is 2 从而达到快捷键效果

record()

该方法用来记录键盘的事件,返回值为事件列表,如果给其加上until参数,则可以设置当按下某一按键时结束侦听,类似wait()方法

举例:

import keyboard


def test(x):
    print("My name is %s" % x)


keyboard.add_hotkey('q',test,args=('Tom',))
rec = keyboard.record(until='esc')
print(rec)

当按q键时,输出My name is Tom,然后record()方法会进行键盘的记录,将其保存为列表,返回列表,传到rec变量里面。

play()

重复已经记录的操作,一般与record()组合,其中有一个参数比较常用

speed_factor = 1.0   # 速度因子,控制重复的速度,可不填,默认1.0

样例:

import keyboard

def tests():
    print('test')

keyboard.add_hotkey('q',tests)
re = keyboard.record(until='esc')
keyboard.play(re)

record将上面按q键的次数进行记录,以列表的形式放入re变量,然后play()方法会重复re列表里面的操作,重复的速度由速度因子决定。

hook()

绑定所有的按键事件,只要有按键按下/松开就会出发函数

import keyboard
def abc(x):
    print(x)

if __name__ == '__main__':
    keyboard.hook(abc)
    keyboard.wait()

无论按什么按键都会触发abc函数,执行abc函数。

KeyboardEvent()

按键事件,常用的三个参数如下:

event_type:按键的类型是按下还是弹起(down/up)

scan_code:按键号,每个按键都有对应的编号,按键的值

name:按键的名字

举例:

import keyboard

def test(x):
    a = keyboard.KeyboardEvent('down',28,'enter')
    if x.event_type == 'down' and x.name == 'enter':
        print("你按下了enter键")

keyboard.hook(test)
keyboard.wait()

enter按键的值为28,如果不知道按键的值可以用hook绑定事件后用x.scan_code进行输出,代码如下:

import keyboard

def test(x):
    print(x.scan_code)

keyboard.hook(test)
keyboard.wait()

更多方法

以上为常见的几种方法,更多的方法请参见下方链接

https://github.com/boppreh/keyboard#api

参考文章:

https://github.com/boppreh/keyboard/blob/master/README.md

https://www.jianshu.com/p/8e508c6a05ce

End

  • 11
    点赞
  • 93
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
在Vue 3中,你可以使用`watch`侦听器来实现以下功能: 1. 监听数据的变化并执行相应的操作:你可以使用`watch`侦听器来监视数据的变化,一旦数据发生变化,就可以执行相应的操作。例如,你可以监听某个数据变量,并在它发生变化时更新页面上的内容。 ```javascript watch('dataVariable', (newValue, oldValue) => { // 执行操作 }); ``` 2. 异步监听数据的变化:有时候,你需要在数据变化之后执行异步操作,例如发送网络请求或者处理复杂的计算。Vue 3中的`watch`侦听器支持异步函数作为回调函数,你可以在回调函数中执行异步操作。 ```javascript watch('dataVariable', async (newValue, oldValue) => { // 执行异步操作 }); ``` 3. 监听多个数据的变化:你可以在一个`watch`侦听器中同时监听多个数据的变化。当任意一个被监听的数据发生变化时,回调函数都会被触发。 ```javascript watch([ 'dataVariable1', 'dataVariable2' ], (newValues, oldValues) => { // 执行操作 }); ``` 4. 监听组件内部属性的变化:除了监听数据变化外,你还可以使用`watch`侦听器来监听组件内部的属性变化。例如,你可以监听某个组件内部的计算属性,并在其值发生变化时执行操作。 ```javascript watch(() => computedProperty.value, (newValue, oldValue) => { // 执行操作 }); ``` 需要注意的是,在Vue 3中,`watch`侦听器的用法与Vue 2中的`$watch`方法有所不同。你可以在Vue 3的官方文档中查看更多关于`watch`侦听器的详细用法和示例。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值