python-pynput库使用示例

目录

1.处理键盘

1.1控制键盘

1.2监听键盘

2.处理鼠标

2.1控制鼠标

2.2监听鼠标


pynput是一个用于模拟、监听鼠标键盘操作的python库,可用于自动化办公,如自动签到。。。

1.处理键盘

pynput.keyboard包含控制和监听键盘的类。

1.1控制键盘

pynput.keyboad.Controller如下

from pynput.keyboard import Key, Controller

keyboard = Controller()

# 按下和释放空格
keyboard.press(Key.space)
keyboard.release(Key.space)

# 输入一个小写a; 
keyboard.press('a')
keyboard.release('a')

# 两种方式录入大写A
keyboard.press('A')
keyboard.release('A')
with keyboard.pressed(Key.shift):
    keyboard.press('a')
    keyboard.release('a')

# 用快捷的方式录入 'Hello World' 
keyboard.type('Hello World')

1.2监听键盘

pynput.keyboard.Listener如下:

from pynput import keyboard

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

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

# 收集事件直到释放按键
with keyboard.Listener(
        on_press=on_press,
        on_release=on_release) as listener:
    listener.join()

# 非阻塞模式
listener = keyboard.Listener(
    on_press=on_press,
    on_release=on_release)
listener.start()

键盘监听器是threading.Thread的实例,所有回调都在同一线程中被调用,调用pynput.keyboard.Listener.stop、触发StopException 或者在回调中返回False来停止监听器。

当监听器使用上面代码中非阻塞方式时,当前的线程会继续执行(当和其他包含主循环的GUI框架集成的时候是这种情况),但是当在一个脚本里运行的时候,这会导致程序立即终止。

2.处理鼠标

pynput.mouse这个包含了控制和监听鼠标的类。

2.1控制鼠标

pynput.mouse.Controller如下:

from pynput.mouse import Button, Controller

mouse = Controller()

# 获取指针位置
print('当前指针位置 {0}'.format(
    mouse.position))

# 设置指针位置
mouse.position = (10, 20)
print('鼠标移动到 {0}'.format(
    mouse.position))

# 相对于当前位置移动指针
mouse.move(5, -5)

# 点击、释放
mouse.press(Button.left)
mouse.release(Button.left)

# 双击
mouse.click(Button.left, 2)

# 向下滚动2步
mouse.scroll(0, 2)

2.2监听鼠标

pynput.mouse.Listener如下:

from pynput import mouse

def on_move(x, y):
    print('指针移动到 {0}'.format(
        (x, y)))

def on_click(x, y, button, pressed):
    print('{0} at {1}'.format(
        '按下' if pressed else '释放',
        (x, y)))
    if not pressed:
        # 停止监听器
        return False

def on_scroll(x, y, dx, dy):
    print('{0} 滑动,位置 {1}'.format(
        '向下' if dy < 0 else '向上',
        (x, y)))

# 收集事件直到释放左键
with mouse.Listener(
        on_move=on_move,
        on_click=on_click,
        on_scroll=on_scroll) as listener:
    listener.join()

# 也可以使用非阻塞方式:
listener = mouse.Listener(
    on_move=on_move,
    on_click=on_click,
    on_scroll=on_scroll)
listener.start()

鼠标监听器是threading.Thread的实例,并且所有的回调都会在这个线程中被调用。调用pynput.mouse.Listener.stop引发StopException或者从回调返回False可以停止监听器。

当监听器使用上面代码中非阻塞方式时,当前的线程会继续执行(当和其他包含主循环的GUI框架集成的时候是这种情况),但是当在一个脚本里运行的时候,这会导致程序立即终止。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

枫叶尘落

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值