摘要:包含控制和監(jiān)控鍵盤的類。要使用上面的子包,從中引入即可。接下來就跟著小胖一起來看下如何玩轉(zhuǎn)鼠標(biāo)和鍵盤吧。調(diào)用,發(fā)起異常,或者回調(diào)函數(shù)中返回都會停止事件的監(jiān)聽。傳遞給回調(diào)函數(shù)的參數(shù)是一個(gè)類的實(shí)例。
關(guān)注公眾號:「Python專欄」,后臺回復(fù)「小姐姐」,獲取全套代碼!!!
還記得曾經(jīng)為了刷大話西游而下載了按鍵精靈,然后論壇上搜了各種分辨率的腳本么?
還記得春節(jié)為了刷回家的高鐵票,自己寫了按鍵精靈的腳本么?
現(xiàn)在python有一個(gè)神奇的庫,我們不用再去模擬復(fù)雜的按鍵精靈了!監(jiān)控鼠標(biāo)、鍵盤,甚至是……
pynput這個(gè)庫讓你可以控制和監(jiān)控輸入設(shè)備。
對于每一種輸入設(shè)備,它包含一個(gè)子包來控制和監(jiān)控該種輸入設(shè)備:
pynput.mouse:包含控制和監(jiān)控鼠標(biāo)或者觸摸板的類。
pynput.keyboard:包含控制和監(jiān)控鍵盤的類。
上面提到的子包都已被引入到pynput庫中。要使用上面的子包,從pynput中引入即可。
from pynput import mouse, keyboard
接下來就跟著小胖一起來看下如何玩轉(zhuǎn)鼠標(biāo)和鍵盤吧。
1. 控制鼠標(biāo)使用pynput.mouse控制鼠標(biāo)
from pynput.mouse import Controller, Button mouse = Controller() # 獲取當(dāng)前鼠標(biāo)位置 print(f"當(dāng)前小胖的鼠標(biāo)位置是: {mouse.position}") # 設(shè)置鼠標(biāo)位置 mouse.position = (10, 20) print(f"現(xiàn)在小胖把鼠標(biāo)移動(dòng)到 {mouse.position}") # 使用相對距離,移動(dòng)當(dāng)前鼠標(biāo) mouse.move(5, -5) # 按下鼠標(biāo)左鍵,釋放鼠標(biāo)左鍵 mouse.press(Button.left) mouse.release(Button.left) # 向下滾動(dòng)2格 mouse.scroll(0, 2)
效果如圖
2. 監(jiān)控鼠標(biāo)事件使用pynput.mouse.Listener監(jiān)控鼠標(biāo)事件
from pynput import mouse def on_move(x, y): print(f"鼠標(biāo)移動(dòng)到坐標(biāo) {(x, y)}") def on_click(x, y, button, pressed): print(f"{"按下" if pressed else "釋放"} ,當(dāng)前位置是: {(x, y)}") if not pressed: # 停止監(jiān)聽 return False def on_scroll(x, y, dx, dy): print(f"滑動(dòng)鼠標(biāo), {"向下" if dy < 0 else "向上"} at {(x, y)}") # 一直監(jiān)聽事件,直到鼠標(biāo)釋放 with mouse.Listener( on_move=on_move, on_click=on_click, on_scroll=on_scroll) as listener: listener.join()
效果如圖
鼠標(biāo)事件監(jiān)聽器是一個(gè)線程,所有的回調(diào)函數(shù)都會在獨(dú)立的線程中運(yùn)行。
調(diào)用pynput.mouse.Listener.stop,發(fā)起StopException異常,或者回調(diào)函數(shù)中返回False都會停止事件的監(jiān)聽。
3. 控制鍵盤使用pynput.keyboard.Controller控制鍵盤
from pynput.keyboard import Key, Controller keyboard = Controller() # 按下并釋放空格 keyboard.press(Key.space) keyboard.release(Key.space) # 按下并釋放小寫字母a keyboard.press("a") keyboard.release("a") # 2種方式輸入大寫A keyboard.press("A") keyboard.release("A") with keyboard.pressed(Key.shift): keyboard.press("a") keyboard.release("a") # 直接操作鍵盤輸入Hello World keyboard.type("Hello World")4. 監(jiān)控鍵盤事件
使用pynput.keyboard.Listener監(jiān)聽鍵盤事件
from pynput import keyboard def on_press(key): try: print(f"字母 {key.char} 被按下了") except AttributeError: print(f"特殊的鍵 {key} 被按下了") def on_release(key): print(f"{key} 被釋放了") if key == keyboard.Key.esc: # 停止監(jiān)聽 return False # 一直監(jiān)聽鍵盤事件,直到停止 with keyboard.Listener( on_press=on_press, on_release=on_release) as listener: listener.join()
鍵盤事件監(jiān)聽器是一個(gè)線程,所有的回調(diào)函數(shù)都會在獨(dú)立的線程中運(yùn)行。
調(diào)用pynput.keyboard.Listener.stop,發(fā)起StopException異常,或者回調(diào)函數(shù)中返回False都會停止事件的監(jiān)聽。
傳遞給回調(diào)函數(shù)的key參數(shù)是一個(gè)pynput.keyboard.Key類的實(shí)例。當(dāng)特殊按鍵和普通按鍵一起按下時(shí),數(shù)字字母按鍵的值會被放置在pynput.keyboard.KeyCode類的實(shí)例中,對于不知道的按鍵會返回None。
接下來就是發(fā)揮你們能力的時(shí)候了,說不定寫個(gè)腳本,用exe包裝一下,命名為種子收發(fā)器?哈哈哈哈,然后就可以監(jiān)聽起來了?
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/43365.html
摘要:我們來用實(shí)現(xiàn)一個(gè)修改開機(jī)密碼的小程序。的邏輯不復(fù)雜,核心代碼就一句話,通過模塊調(diào)用的,來達(dá)到修改密碼。控制,并修改密碼那么就是你想要修改的用戶名,一般有兩種操作,一種是直接修改他的,一種就是修改他現(xiàn)有的用戶。等待用戶雙擊即可。 showImg(https://img-blog.csdnimg.cn/20190302193115788.png?x-oss-process=image/wa...
閱讀 2337·2021-11-16 11:52
閱讀 2323·2021-11-11 16:55
閱讀 750·2021-09-02 15:41
閱讀 2981·2019-08-30 15:54
閱讀 3142·2019-08-30 15:54
閱讀 2251·2019-08-29 15:39
閱讀 1507·2019-08-29 15:18
閱讀 968·2019-08-29 13:00