zltzlt 发表于 2020-1-1 21:33:09

Python 小技巧 047:监听、控制鼠标与键盘

本帖最后由 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()

shaowu1991 发表于 2020-1-3 21:45:01

lixiangyv 发表于 2020-1-4 09:45:19

沙发!

_2_ 发表于 2020-1-4 13:39:02

666

wyhpylc 发表于 2022-12-27 19:30:07

额,没明白】(我脑袋不太好使)楼主可以细讲每个用法嘛{:10_266:}
页: [1]
查看完整版本: Python 小技巧 047:监听、控制鼠标与键盘