鱼C论坛

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

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

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

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

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

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

Python 监听、控制鼠标与键盘


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

控制鼠标

  1. from pynput.mouse import Button, Controller

  2. mouse = Controller()

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

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

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

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

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

  15. # 向下滚动两下(滑动鼠标上的滚轮)
  16. mouse.scroll(0, 2)
复制代码


监听鼠标

  1. from pynput import mouse


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


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


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


  8. # 开始监听
  9. with mouse.Listener(
  10.         on_move=on_move,
  11.         on_click=on_click,
  12.         on_scroll=on_scroll) as listener:
  13.     listener.join()

  14. # 开始监听(不堵塞线程)
  15. listener = mouse.Listener(
  16.     on_move=on_move,
  17.     on_click=on_click,
  18.     on_scroll=on_scroll)
  19. listener.start()
复制代码


控制键盘

  1. from pynput.keyboard import Key, Controller

  2. keyboard = Controller()

  3. # 按下并释放空格
  4. keyboard.press(Key.space)
  5. keyboard.release(Key.space)

  6. # 键入小写字母 a
  7. keyboard.press('a')
  8. keyboard.release('a')

  9. # 键入大写字母 A 的两种方式
  10. keyboard.press('A')
  11. keyboard.release('A')
  12. with keyboard.pressed(Key.shift):
  13.     keyboard.press('a')
  14.     keyboard.release('a')

  15. # 使用快捷的方法键入 "Hello World"
  16. keyboard.type('Hello World')
复制代码


监听键盘

  1. from pynput import keyboard


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


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

  9.     # 如果按下了 <Esc> 键
  10.     if key == keyboard.Key.esc:
  11.         # 停止监听
  12.         return False


  13. # 开始监听
  14. with keyboard.Listener(
  15.         on_press=on_press,
  16.         on_release=on_release) as listener:
  17.     listener.join()

  18. # 开始监听(不堵塞线程)
  19. listener = keyboard.Listener(
  20.     on_press=on_press,
  21.     on_release=on_release)
  22. listener.start()
复制代码

评分

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

查看全部评分

本帖被以下淘专辑推荐:

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

头像被屏蔽
发表于 2020-1-3 21:45:01 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-4 09:45:19 | 显示全部楼层
沙发!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-1-4 13:39:02 From FishC Mobile | 显示全部楼层
666
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-12-27 19:30:07 | 显示全部楼层
额,没明白】(我脑袋不太好使)楼主可以细讲每个用法嘛
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-25 09:37

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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