鱼C论坛

 找回密码
 立即注册
查看: 5861|回复: 4

[技术交流] Python 小技巧 047:监听、控制鼠标与键盘

[复制链接]
发表于 2020-1-1 21:33:09 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 zltzlt 于 2020-1-2 19:23 编辑

Python 监听、控制鼠标与键盘


Python 有着数不清的第三方库,pynput 就是其中之一,它实现了监听、控制鼠标与键盘。让我们通过几个小例子学习它的基本用法。

控制鼠标
from pynput.mouse import Button, Controller

mouse = Controller()

# 读取鼠标指针在屏幕上的位置
print(f'当前鼠标指针的位置是:{mouse.position}')

# 设置鼠标指针的位置
mouse.position = (200, 200)
print(f'现在我们将鼠标指针移动到了 {mouse.position}')

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

# 按下并释放鼠标左键
mouse.press(Button.left)
mouse.release(Button.left)

# 双击鼠标左键
mouse.click(Button.left, 2)

# 向下滚动两下(滑动鼠标上的滚轮)
mouse.scroll(0, 2)

监听鼠标
from pynput import mouse


def on_move(x, y):
    print(f'指针移动到了 {(x, y)}')


def on_click(x, y, button, pressed):
    print(f"在 {(x, y)} {('按下' if pressed else '释放')}鼠标")


def on_scroll(x, y, dx, dy):
    print(f"在 {(x, y)} 位置,鼠标滚轮向{('下' if dy < 0 else '上')}滑动")


# 开始监听
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()

控制键盘
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')

监听键盘
from pynput import keyboard


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


def on_release(key):
    print('{0} 被释放'.format(key))

    # 如果按下了 <Esc> 键
    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()

评分

参与人数 3荣誉 +8 鱼币 +9 贡献 +5 收起 理由
ctOS_ + 5 + 5 + 2 感谢楼主无私奉献!
一个账号 + 1 good!
fan1993423 + 3 + 3 + 3 感谢楼主分享,有收获!

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

头像被屏蔽
发表于 2020-1-3 21:45:01 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-4 09:45:19 | 显示全部楼层
沙发!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-1-4 13:39:02 From FishC Mobile | 显示全部楼层
666
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-12-27 19:30:07 | 显示全部楼层
额,没明白】(我脑袋不太好使)楼主可以细讲每个用法嘛
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-25 14:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表