[Python进阶] 监听键鼠:Pynput

6.8 监听键鼠:Pynput

6.8.1 监听鼠标

from pynput import mouse


def on_move(x, y):
    print(f'鼠标移动到:{x, y}')


def on_click(x, y, button, pressed):
    if pressed:
        print(f'按下了鼠标按键,位置:{x, y},按键为:{button}')
    else:
        print(f'松开了鼠标按键,位置:{x, y},按键为:{button}')


def on_scroll(x, y, dx, dy):
    print(f'滚动了鼠标滚轮,位置:{x, y},横向和纵向滚动量为:{dx, dy}')


with mouse.Listener(
        on_move=on_move,
        on_click=on_click,
        on_scroll=on_scroll) as listener:
    listener.join()

鼠标移动到:(1977, 438)
鼠标移动到:(1977, 436)
鼠标移动到:(1977, 435)
鼠标移动到:(1977, 435)
按下了鼠标按键,位置:(1977, 435),按键为:Button.left
松开了鼠标按键,位置:(1977, 435),按键为:Button.left
滚动了鼠标滚轮,位置:(1977, 435),横向和纵向滚动量为:(0, -1)
滚动了鼠标滚轮,位置:(1977, 435),横向和纵向滚动量为:(0, 1)

鼠标事件监听器是一个线程,所有的回调函数都会在独立的线程中运行。调用pynput.mouse.Listener.stop,可以发起StopException异常,或者回调函数中返回False都会停止事件的监听。

6.8.2 监听键盘

from pynput import keyboard
from pynput.keyboard import Key


def on_press(key):
    try:
        print(f'按下了按键:{key}')
    except AttributeError:
        print(f'不支持的按键:{key}')


def on_release(key):
    print(f'释放了按键:{key}')
    if key == Key.esc:
        # 停止监听
        return False


with keyboard.Listener(
        on_press=on_press,
        on_release=on_release) as listener:
    listener.join()

f按下了按键:‘f’
释放了按键:‘f’
f按下了按键:‘f’
释放了按键:‘f’
按下了按键:Key.esc
释放了按键:Key.esc

进程已结束,退出代码0

键盘事件监听器是一个线程,所有的回调函数都会在独立的线程中运行。
调用pynput.keyboard.Listener.stop,发起StopException异常,或者回调函数中返回False都会停止事件的监听。
传递给回调函数的key参数是一个pynput.keyboard.Key类的实例。当特殊按键和普通按键一起按下时,数字字母按键的值会被放置在pynput.keyboard.KeyCode类的实例中,对于不知道的按键会返回None。

你可能感兴趣的:(Python进阶,#,六,系统及相关操作,python,Python入门,Python进阶)