Python 技术篇-基于PyHook3+threading多线程实现鼠标单击事件和双击事件的识别实例演示
生活随笔
收集整理的這篇文章主要介紹了
Python 技术篇-基于PyHook3+threading多线程实现鼠标单击事件和双击事件的识别实例演示
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
這里我設(shè)定了一個(gè)變量 time_k 和 1 秒的多線程延遲變量來控制。
# -*- coding: UTF8 -*-import PyHook3 import pythoncom import threadingtime_k = 0;def execute_script(time_k_old, action):'''作用:執(zhí)行腳本'''try:global time_kif(time_k ==1):print(action + "單擊動(dòng)作")elif(time_k == 2):print(action + "雙擊動(dòng)作")except Exception as e:print(e)time_k = 0;# 監(jiān)聽到鼠標(biāo)事件調(diào)用 def onMouseEvent(event):global mglobal time_k;try:if(event.MessageName != "mouse move" and (event.MessageName == "mouse left up" or event.MessageName == "mouse right up")): # 因?yàn)槭髽?biāo)一動(dòng)就會(huì)有很多mouse move,所以把這個(gè)過濾下,鼠標(biāo)按下和抬起都會(huì)有記錄,這里我們把抬起down操作過濾掉action = "" # 記錄左鍵還是右鍵點(diǎn)擊if("right" in event.MessageName):action = "右鍵"elif("left" in event.MessageName):action = "左鍵"if(time_k == 0):time_k = 1;# 設(shè)定1秒后延遲執(zhí)行threading.Timer(1, execute_script, (time_k, action)).start()elif(time_k == 1):time_k = 2;elif(time_k == 2):return Falsereturn True # 為True才會(huì)正常調(diào)用,如果為False的話,此次事件被攔截except Exception as e:print(e)# 監(jiān)聽到鍵盤事件調(diào)用 def onKeyboardEvent(event):# print(event.Key) # 返回按下的鍵return Truedef main():# 創(chuàng)建管理器hm = PyHook3.HookManager()# 監(jiān)聽鍵盤hm.KeyDown = onKeyboardEvent hm.HookKeyboard() # 監(jiān)聽鼠標(biāo) hm.MouseAll = onMouseEvent hm.HookMouse()# 循環(huán)監(jiān)聽pythoncom.PumpMessages() if __name__ == "__main__":main()效果圖如下:
喜歡的點(diǎn)個(gè)贊?吧!
總結(jié)
以上是生活随笔為你收集整理的Python 技术篇-基于PyHook3+threading多线程实现鼠标单击事件和双击事件的识别实例演示的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python 技术篇-在cmd命令提示行
- 下一篇: Oracle数据库ORA-12516:“