Python之pynput監聽和控制鼠標鍵盤


1、下載

python -m pip install pynput

2、監聽鼠標事件

from pynput import mouse


def mouse_move(x, y):
    """
    鼠標移動事件
    :param x: 橫坐標
    :param y: 縱坐標
    :return:
    """
    pass
    # print(f'鼠標移動X,Y:{x},{y}')


def mouse_click(x, y, button, pressed):
    """
    鼠標點擊事件
    :param x: 橫坐標
    :param y: 縱坐標
    :param button: 按鈕枚舉對象 Button.left 鼠標左鍵 Button.right 鼠標右鍵 Button.middle 鼠標中鍵
    :param pressed: 按下或者是釋放,按下是True釋放是False
    :return:
    """
    pass
    if pressed:
        print('按下鼠標')
        print(x)
        print(y)
        print(button)
    else:
        print('釋放鼠標')
        print(x)
        print(y)
        print(button)
    print(''.center(20, '*'))
    if 500 <= x <= 550:
        print('返回False結束監聽')
        return False


def mouse_scroll(x, y, dx, dy):
    """
    鼠標滾動事件
    :param x: 橫坐標
    :param y: 縱坐標
    :param dx:滾輪的橫坐標方向的移動量,0未移動,1向前面滾動和-1向后面滾動
    :param dy:滾輪的縱坐標方向的移動量,0未移動,1向前面滾動和-1向后面滾動
    :return:
    """
    pass
    print(x)
    print(y)
    print(dx)
    print(dy)


# 監聽鼠標事件
with mouse.Listener(
        on_move=mouse_move,  # 鼠標移動事件
        on_click=mouse_click,  # 鼠標點擊事件
        on_scroll=mouse_scroll  # 鼠標滾動事件
        ) as listener:
    listener.join()

3、監聽鍵盤事件

from pynput.keyboard import Key
from pynput.keyboard import Listener


def keyboard_press(key):
    print(key)
    print(f'key:{key}')
    if Key.space:
        print('按下了空格')


def keyboard_release(key):
    print(f'key:{key}')
    if key == Key.esc:  # 如果按下了ESC鍵,則結束監聽
        return False


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

4、控制鼠標

from pynput.mouse import Button
from pynput.mouse import Controller

mouse = Controller()

position = mouse.position  # 獲取當前的鼠標位置
print('當前的鼠標位置:{}'.format(position))

mouse.position = (1017, 236)  # 設置鼠標的位置,移動鼠標到該位置
print('移動鼠標到坐標點:{}'.format(mouse.position))

mouse.move(5, -5)  # 相對於當前鼠標位置位置移動鼠標

mouse.press(Button.left)  # 按下鼠標左鍵
mouse.release(Button.left)  # 釋放鼠標左鍵
mouse.press(Button.right)  # 按下鼠標右鍵
mouse.release(Button.right)  # 釋放鼠標右鍵
mouse.press(Button.middle)  # 按下鼠標中鍵
mouse.release(Button.middle)  # 釋放鼠標中鍵

mouse.click(Button.left, 2)  # 雙擊鼠標左鍵

mouse.scroll(0, 2)  # 向下滾動滾輪兩次

5、控制鍵盤

from pynput.keyboard import Key, Controller

keyboard = Controller()

# Press and release space
keyboard.press(Key.space)
keyboard.release(Key.space)

# Type a lower case A; this will work even if no key on the
# physical keyboard is labelled 'A'
keyboard.press('a')
keyboard.release('a')

# Type two upper case As
keyboard.press('A')
keyboard.release('A')
with keyboard.pressed(Key.shift):
    keyboard.press('a')
    keyboard.release('a')

# Type 'Hello World' using the shortcut type method
keyboard.type('Hello World')

6、監聽鍵盤時可以這樣看這個key有哪些屬性

按下的鍵不同,key的屬性還不一樣!!!!!!!!!!!!

# -*- encoding=utf-8 -*-
from pynput.keyboard import Key
from pynput.keyboard import Listener
from pynput.mouse import Controller


def keyboard_press(key):
    print(f'按下的key:{key}')
    print(key.__dict__)
    if hasattr(key, 'char'):
        print(f'char:{key.char}')
    else:
        print('沒有char屬性')


def keyboard_release(key):
    print(f'key:{key}')
    if key == Key.esc:  # 如果按下了ESC鍵,則結束監聽
        return False


if __name__ == '__main__':
    mouse = Controller()
    with Listener(on_press=keyboard_press,
                  on_release=keyboard_release) as listener:
        listener.join()

學習鏈接 https://blog.csdn.net/hskjshs/article/details/113521216?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.baidujs&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.baidujs

官網 https://pythonhosted.org/pynput/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM