最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python自動化之pynput鍵盤鼠標操作全攻略

 更新時間:2025年05月26日 08:35:11   作者:lagrahhn  
這篇文章主要為大家詳細介紹了Python如何使用pynput實現(xiàn)鍵盤鼠標的自動化操作,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下

鍵盤操作

需要執(zhí)行 pressrelease 來輸入按鍵。 當然,也可以單獨執(zhí)行 press

from pynput.keyboard import Key, Controller
from time import sleep

# 初始化鍵盤控制器
keyboard = Controller()

sleep(3)

# 模擬按下和釋放 A 鍵
keyboard.press('a')
keyboard.release('a')

# 模擬按下和釋放 Enter 鍵
keyboard.press(Key.enter)
keyboard.release(Key.enter)

鼠標操作

from pynput.mouse import Button,Controller
from time import sleep

# 初始化鼠標控制器
mouse = Controller()

sleep(3)

# 模擬鼠標移動到 (100, 100) 位置
mouse.position = (100, 100)

mouse.click(Button.left,1)

# 模擬鼠標右鍵點擊
mouse.click(Button.right, 1)

注意:這里引入的是 pynput.mouse 的 Controller,與鍵盤處的名稱相同,但是作用不同,需要區(qū)分。推薦使用別名的方式將 Controller 命名為 MouseController。下面的方法也會用別名的方式進行區(qū)分。

from pynput.mouse import Controller as MouseController

鍵盤監(jiān)聽

from pynput.keyboard import Listener as KeyboardListener

def on_press(key):
    print(f'Alphanumeric key pressed: {key}')

def on_release(key):
    print(f'Alphanumeric key released: {key}')
    if key == Key.esc:
        # 停止監(jiān)聽
        return False
  
# 設(shè)置鍵盤監(jiān)聽
with KeyboardListener(on_press=on_press, on_release=on_release) as listener:
    listener.join()

該方法輸出用戶按下的按鍵,當用戶按下 Esc 時停止。

全局熱鍵監(jiān)聽

def keyboard_hotkey():
    keyboard_controller = Controller()
  
    def on_activate_f():
        print('全局熱鍵 F 被激活')
        keyboard_controller.type('你按了熱鍵F')

    def on_activate_shift_a():
        print('全局熱鍵 Shift+A 被激活')
        keyboard_controller.type('你按了熱鍵Shift+A')

    # 創(chuàng)建熱鍵
    with keyboard.GlobalHotKeys({
            'f': on_activate_f,
            '<shift>+a': on_activate_shift_a}) as h:
        h.join()

鼠標監(jiān)聽

from pynput.mouse import Listener as MouseListener

def mouse_listener():
    # 添加左鍵點擊計數(shù)器
    left_click_count = 0
  
    def on_move(x, y):
        print(f'Mouse moved to ({x}, {y})')
  
    def on_click(x, y, button, pressed):
        nonlocal left_click_count
        print(f'Mouse clicked at ({x}, {y}) with {button}')
        # 檢查是否是左鍵點擊且按下狀態(tài)
        if button == Button.left and pressed:
            left_click_count += 1
            print(f'左鍵點擊次數(shù): {left_click_count}')

            # 如果左鍵點擊次數(shù)超過三次,停止監(jiān)聽
            if left_click_count >= 3:
                print('左鍵點擊已達到3次,停止監(jiān)聽')
                return False

    def on_scroll(x, y, dx, dy):
        print(f'Scrolled at ({x}, {y})')

  

    # 設(shè)置鼠標監(jiān)聽
    with MouseListener(on_move=on_move, on_click=on_click, on_scroll=on_scroll) as listener:
        listener.join()

mouse_listener()

該示例記錄鼠標信息,當鼠標左鍵點擊三次停止。

知識補充

如何通過pynput與日志記錄實現(xiàn)鍵盤、鼠標的監(jiān)聽行為?

將相關(guān)的模塊導(dǎo)入到代碼塊中。

# 鼠標鍵盤監(jiān)控
from pynput import keyboard, mouse
# 日志處理
from loguru import logger
# 多線程處理
from threading import Thread

將目標日志記錄文件加入到logger代碼處理器中。

logger.add('lister.log')

編寫鼠標被按下時的處理函數(shù)。

def on_keyboard_press(key):
    '''
    按鍵時記錄所按下的鍵
    :param key:
    :return:
    '''
    logger.debug(f'{key} :被按下了')

編寫鼠標抬起時的處理函數(shù)。

def on_keyboard_release(key):
    '''
    釋放按鍵處理函數(shù)
    :param key:
    :return:
    '''
    if key == keyboard.Key.esc:
        return False

編寫鼠標單擊、右擊以及滑輪的處理函數(shù)。

def on_mouse_click(x, y, click, pressed):
    if click == mouse.Button.left:
        logger.debug('鼠標左鍵按下了')
    elif click == mouse.Button.right:
        logger.debug('鼠標右鍵按下了')
        return False
    else:
        logger.debug('中間滾輪按下了')

將鍵盤相關(guān)的處理函數(shù)加入到鍵盤事件的監(jiān)聽中。

def func_keyboard():
    '''
    鍵盤的按下/釋放的監(jiān)聽
    :return:
    '''
    with keyboard.Listener(on_press=on_keyboard_press, on_release=on_keyboard_release) as keyboard_listener:
        keyboard_listener.join()

將鼠標相關(guān)的處理函數(shù)加入到鼠標事件的監(jiān)聽中。

def func_keyboard():
    '''
    鍵盤的按下/釋放的監(jiān)聽
    :return:
    '''
    with keyboard.Listener(on_press=on_keyboard_press, on_release=on_keyboard_release) as keyboard_listener:
        keyboard_listener.join()

在main()的處理函數(shù)中將鼠標監(jiān)聽、鍵盤監(jiān)聽分別作為兩個線程啟動。

if __name__ == '__main__':
    '''
    執(zhí)行線程
    '''
    # 定義鍵盤監(jiān)聽線程
    thread_keyboard = Thread(target=func_keyboard)
    # 定義鼠標監(jiān)聽線程
    thread_mouse = Thread(target=func_mouse_click)
    # 分別啟動線程
    thread_keyboard.start()
    thread_mouse.start()

最后可以得到一份鍵盤、鼠標歷史執(zhí)行狀態(tài)記錄的日志文件,通過NLTK語言的處理從而逆向推出電腦的操作內(nèi)容,這一部分就不演示了。

到此這篇關(guān)于Python自動化之pynput鍵盤鼠標操作全攻略的文章就介紹到這了,更多相關(guān)Python pynput操作鍵盤鼠標內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python 進程調(diào)用(subprocess)的實現(xiàn)

    Python 進程調(diào)用(subprocess)的實現(xiàn)

    在Python編程中,subprocess庫是一個功能強大的工具,它允許我們創(chuàng)建新進程、連接到其輸入/輸出/錯誤管道,并獲取其返回代碼,下面就來詳細的介紹一下,感興趣的可以了解一下
    2025-10-10
  • Python用5行代碼實現(xiàn)批量摳圖的示例代碼

    Python用5行代碼實現(xiàn)批量摳圖的示例代碼

    這篇文章主要介紹了Python用5行代碼實現(xiàn)批量摳圖的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-04-04
  • python?管理系統(tǒng)實現(xiàn)mysql交互的示例代碼

    python?管理系統(tǒng)實現(xiàn)mysql交互的示例代碼

    這篇文章主要介紹了python?管理系統(tǒng)實現(xiàn)mysql交互,本文通過實例代碼圖文相結(jié)合給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-12-12
  • 對Python 語音識別框架詳解

    對Python 語音識別框架詳解

    今天小編就為大家分享一篇對Python 語音識別框架詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • Python OpenCV一個窗口中顯示多幅圖像

    Python OpenCV一個窗口中顯示多幅圖像

    大家好,本篇文章主要講的是Python OpenCV一個窗口中顯示多幅圖像,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2022-01-01
  • 詳解Python中列表和元祖的使用方法

    詳解Python中列表和元祖的使用方法

    這篇文章主要介紹了詳解Python中列表和元祖的使用方法,代碼基于Python2.x版本,元祖和列表是Python學習當中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-04-04
  • python查詢mysql中文亂碼問題

    python查詢mysql中文亂碼問題

    本文主要是解決python2.7在查詢mysql時產(chǎn)生中文亂碼的處理方法,非常的有用,親測可行,推薦給大家
    2014-11-11
  • Python中面向?qū)ο竽銘?yīng)該知道的一下知識

    Python中面向?qū)ο竽銘?yīng)該知道的一下知識

    這篇文章主要介紹了Python中面向?qū)ο竽銘?yīng)該知道的一下知識,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-07-07
  • python實現(xiàn)動態(tài)創(chuàng)建類的方法分析

    python實現(xiàn)動態(tài)創(chuàng)建類的方法分析

    這篇文章主要介紹了python實現(xiàn)動態(tài)創(chuàng)建類的方法,結(jié)合實例形式分析了Python動態(tài)創(chuàng)建類的原理、實現(xiàn)方法及相關(guān)操作技巧,需要的朋友可以參考下
    2019-06-06
  • 用不到50行的Python代碼構(gòu)建最小的區(qū)塊鏈

    用不到50行的Python代碼構(gòu)建最小的區(qū)塊鏈

    這篇文章主要為大家詳細介紹了用不到50行的Python代碼構(gòu)建最小的區(qū)塊鏈,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-11-11

最新評論

浦城县| 法库县| 岳普湖县| 美姑县| 合山市| 凌海市| 斗六市| 景宁| 招远市| 老河口市| 曲靖市| 夏邑县| 宕昌县| 会昌县| 垦利县| 吴忠市| 定远县| 台湾省| 洛南县| 马关县| 色达县| 手游| 天全县| 昌图县| 延川县| 威海市| 车险| 三明市| 五峰| 富蕴县| 东光县| 上犹县| 巨野县| 宁明县| 安顺市| 乌拉特中旗| 尚志市| 阳泉市| 巨野县| 崇信县| 宜春市|