詳解Python中鍵盤鼠標(biāo)的相關(guān)操作
一、前言
恭喜你,學(xué)明白類,你已經(jīng)學(xué)會(huì)所有基本知識(shí)了。
這章算是一個(gè)娛樂(lè)篇,十分簡(jiǎn)單,了解一下pyautogui模塊,這算是比較好學(xué)還趣味性十足的,而且可以做許多小程序。
本文會(huì)對(duì)ptautogui模塊進(jìn)行詳細(xì)的學(xué)習(xí)and講解。寫作不易,支持一波~
二、pyautogui模塊
pyautogui模塊,規(guī)范一點(diǎn)大寫就是PyAutoGUI模塊,是用來(lái)實(shí)現(xiàn)自動(dòng)化腳本的一個(gè)十分得力的小助手。他可以操控鍵盤和鼠標(biāo),可以寫許多工具。
安裝的話就用我們?nèi)f能的pip包,相信大家已經(jīng)安裝過(guò)了,沒(méi)安裝的話網(wǎng)上有許多教程可以學(xué)。
win+R,輸入cmd,再輸入:
pip install pyautogui
你就安裝成功了。之后可以輸入import pyautogui,沒(méi)報(bào)錯(cuò)就是成功。
接下來(lái),我們就可以玩轉(zhuǎn)鼠標(biāo)和鍵盤了。模塊名字比較長(zhǎng),建議用as取一個(gè)別名,但可別取成py啊。
三、鼠標(biāo)相關(guān)操作
1、鼠標(biāo)移動(dòng)
我們先學(xué)習(xí)鼠標(biāo)移動(dòng)的相關(guān)。first了解一下計(jì)算機(jī)的坐標(biāo)系統(tǒng)。
計(jì)算機(jī)顯示器的分辨率一般是1920x1080,有的不一樣,我們用size函數(shù)來(lái)獲取用戶顯示器的分辨率。他會(huì)返回兩個(gè)值,要用兩個(gè)變量保存。
import pyautogui as gui a,b=gui.size() print(a,b)
輸出:1920 1080(根據(jù)用戶顯示器大小而定寬度、長(zhǎng)度)
注意,就算是分辨率我們也要用“減一”原則,例如你的顯示器寬度1920,那么最左邊是0,最右邊是1919,1920就越界了。
如果我們想讓鼠標(biāo)移動(dòng),就要用moveTo,注意T是大寫。他可以填入兩個(gè)參數(shù):移動(dòng)地點(diǎn)的x坐標(biāo),y坐標(biāo)。
import pyautogui as gui gui.moveTo(1919,1079)
這個(gè)程序可以讓鼠標(biāo)瞬移到右下角,是不是很nb?
還可以填第三個(gè)參數(shù),是移動(dòng)所需要的時(shí)間,默認(rèn)0秒。
注意:在鼠標(biāo)移動(dòng)的過(guò)程中,要是移動(dòng)鼠標(biāo)他會(huì)給你拉回原位置,相當(dāng)于固定住了,所以把時(shí)間調(diào)長(zhǎng)容易直接動(dòng)不了,非常的難受。
這里,教給大家一個(gè)東西。pyautogui模塊里面自帶了神奇的變量:FAILSAFE,默認(rèn)為True。當(dāng)這個(gè)變量為True時(shí),如果鼠標(biāo)控制不了了,你就使勁往左上角拉,程序就會(huì)報(bào)錯(cuò)。
import pyautogui as gui gui.FAILSAFE =True gui.moveTo(1919,1079,5)
這段代碼鼠標(biāo)會(huì)移動(dòng)到右下角,如果在這個(gè)過(guò)程中使勁往左上角拉就會(huì)報(bào)錯(cuò)。
接下來(lái),我們就可以做一個(gè)簡(jiǎn)單的小程序——鼠標(biāo)操控術(shù)。
import pyautogui as gui import random as r gui.FAILSAFE =True a=0 print("嘎嘎嘎你的鼠標(biāo)被我 操控了") while a<=100: gui.moveTo(r.randint(1,1919),r.randint(1,1079)) a+=1
這個(gè)程序運(yùn)行后,會(huì)把你的鼠標(biāo)隨機(jī)移動(dòng)到任意地方100次。
你可以自己調(diào)整循環(huán)次數(shù)來(lái)整你的好友,前提是他的電腦要有python。
我們把FAILSAFE設(shè)置為了True,控制不住的時(shí)候就使勁往左上移動(dòng)就行,要是想整蠱好友就設(shè)置成False。好玩不?
另外,如果想在原有基礎(chǔ)上移動(dòng),就用move。
import pyautogui pyautogui.move(100,100,2)
例如這個(gè)程序,會(huì)花2秒將鼠標(biāo)往右移動(dòng)100格,往下移動(dòng)100格。
2、獲取鼠標(biāo)位置
之后是position()函數(shù),可以獲取當(dāng)前鼠標(biāo)的位置。
import pyautogui as gui import time while True: print(gui.position()) time.sleep(1)
這個(gè)程序可以隔1秒輸出一次你的鼠標(biāo)的位置。
3、鼠標(biāo)點(diǎn)擊
如果要讓鼠標(biāo)點(diǎn)擊,就要用click函數(shù)。
pyautogui.click(0,0,button='left') pyautogui.click(0,0,button='right') pyautogui.click(0,0,button='middle')
前兩個(gè)值還是點(diǎn)擊的xy坐標(biāo),第三個(gè)值是點(diǎn)擊的鍵,記住要用關(guān)鍵字參數(shù)的形式,left是左鍵,right是右鍵,middle是中鍵。這個(gè)程序是分別用左鍵右鍵中鍵點(diǎn)擊左上角。
如果要雙擊左鍵,用doubleClick,雙擊右鍵用rightClick,雙擊中鍵用middleClick。他們?nèi)齻€(gè)用法相近,還是要填xy坐標(biāo)。
pyautogui.doubleClick(10,10) pyautogui.rightClick(10,10) pyautogui.middleClick(10,10)
運(yùn)行之后會(huì)在10,10的位置雙擊左鍵,雙擊右鍵,雙擊中鍵。
4、按松鼠標(biāo)
如果我們要按松鼠標(biāo)就要用mouseDown和mouseUp,mouseDown是按下,mouseUp是松開。
import pyautogui as gui from time import sleep print("落下") gui.mouseDown() sleep(1) gui.mouseUp() print("松開")
這個(gè)程序會(huì)先按下鼠標(biāo),等一秒松開。
5、拖動(dòng)窗口
要拖動(dòng)一個(gè)窗口,如果想移動(dòng)到一個(gè)位置用dragTo,還是兩個(gè)參數(shù)為xy坐標(biāo),第三個(gè)參數(shù)為時(shí)間,默認(rèn)為0。
import pyautogui as gui gui.dragTo(0,0,3)
這個(gè)程序會(huì)把按住的窗口用3秒拖動(dòng)到左上角。
如果想在原位置的基礎(chǔ)上移動(dòng)用dragRel,前兩個(gè)參數(shù)為要往右移動(dòng)多少和往下移動(dòng)多少,第三個(gè)參數(shù)為時(shí)間。
import pyautogui as gui gui.dragRel(200,0,3)
這個(gè)程序會(huì)把按住的窗口用三秒時(shí)間往右移動(dòng)200像素。
同樣,還有一個(gè)drag,因?yàn)榫W(wǎng)上我也沒(méi)查到相關(guān)資料,自己試驗(yàn)出來(lái)的效果···好像和dragRel一樣?我也不知道咋回事,如果有人知道請(qǐng)?jiān)谠u(píng)論區(qū)指出,謝謝配合。
6、上下滑動(dòng)
如果想上下滑動(dòng)(就是移動(dòng)滾輪),就要用scroll,要填一個(gè)參數(shù),為移動(dòng)的格數(shù),默認(rèn)是往上滑,加上-負(fù)號(hào)是往下滑。注意,滑動(dòng)的時(shí)候鼠標(biāo)必須停留在那個(gè)窗口上否則沒(méi)用。
import pyautogui as gui gui.scroll(-200)
這個(gè)程序會(huì)在鼠標(biāo)停留頁(yè)面往下滑動(dòng)200格。
7、小程序——鼠標(biāo)操控術(shù)2.0
鼠標(biāo)的用法就是這么多了。他可以做很多的自動(dòng)化程序。
現(xiàn)在,讓我們把剛才操控鼠標(biāo)的程序完善一下。
import pyautogui as gui import random as r gui.FAILSAFE =True a=0 print("嘎嘎嘎你的鼠標(biāo)被我 操控了") while a<=100: b=r.randint(1,3) if b==1: gui.moveTo(r.randint(1,1919),r.randint(1,1079)) if b==2: gui.click(r.randint(1,1919),r.randint(1,1079),button='left') if b==3: gui.dragTo(r.randint(1,1919),r.randint(1,1079)) a+=1
這個(gè)程序還會(huì)在原有的基礎(chǔ)上亂點(diǎn),滑動(dòng),整蠱好友的時(shí)候別忘了改成False哦~
8、小程序——連點(diǎn)器
接下來(lái),讓我們嘗試做一個(gè)連點(diǎn)器。
import pyautogui as gui#導(dǎo)入pyautogui模塊 from time import sleep#導(dǎo)入time中的sleep函數(shù) gui.SAILSAFE=True#開啟安全功能 a=int(input("要點(diǎn)擊幾次?"))#獲取點(diǎn)擊次數(shù) print("5秒后程序?qū)⑦\(yùn)行,請(qǐng)將光標(biāo)懸浮于連點(diǎn)界面上,如果控制不住鼠標(biāo)請(qǐng)把鼠標(biāo)往左上角滑動(dòng)")#提示 sleep(5)#預(yù)留時(shí)間 x,y=gui.position()#獲取鼠標(biāo)坐標(biāo) for i in range(a):#重復(fù)執(zhí)行 gui.click(x,y)#點(diǎn)擊 print("連點(diǎn)結(jié)束")#提示
效果:
加上我的手速也才點(diǎn)了這么多,python還是太慢了,但也滿足需求了。
四、鍵盤相關(guān)操作
接下來(lái)是鍵盤的相關(guān)操作。
1、按鍵的按松
按鍵按下,用keyDown,按鍵起來(lái)用keyUp,這倆要配合起來(lái)用。
import pyautogui as gui gui.keyDown("shift") gui.keyUp("shift")
這個(gè)程序就是按下松開一次shift。
要是不想多打字就用press,它就相當(dāng)于同時(shí)調(diào)用keyDown和keyUp。
import pyautogui as gui gui.press("shift")
他與上一個(gè)程序效果一樣。
如果想按多個(gè)鍵就用列表給他包起來(lái)就行了。
import pyautogui as gui gui.press(['a','left','b'])
這個(gè)程序會(huì)按a,再按左鍵,再按b,之后就相當(dāng)于按了ba。
2、鍵入字符串
最好用的是typewrite,就是輸入一個(gè)字符串。注意:一定要確保光標(biāo)位置,不然沒(méi)有用。
import pyautogui as gui gui.typewrite('666')
這個(gè)程序會(huì)在指定位置輸入666。注意:typewrite只能輸入英文,中文不起作用。
typewrite如果后面再放一個(gè)參數(shù),就代表輸入每一個(gè)字母的間隔時(shí)間。
import pyautogui as gui gui.typewrite('python',1)
這個(gè)程序運(yùn)行之后,會(huì)隔1秒輸入1個(gè)字符,輸出完python一共要5秒。
是不是很厲害?
它還可以放在列表里來(lái)輸出多個(gè)字符串,例如這個(gè)程序:
import pyautogui as gui gui.typewrite(['a','left','b'])
注意:這里的left可是左方向鍵的意思,程序會(huì)把他轉(zhuǎn)換,他會(huì)鍵入ba。
有人問(wèn)了:typewrite和press有啥區(qū)別???
沒(méi)認(rèn)真看吧?typewrite的意思是輸入字符串,press是敲擊鍵盤。left只是在typewrite里面會(huì)發(fā)生轉(zhuǎn)義,轉(zhuǎn)義知不知道?
3、熱鍵
還有一個(gè)有用的函數(shù),是hotkey,就是熱鍵,快捷鍵,放上按鍵就能完成一次快捷鍵。
import pyautogui as gui gui.hotkey('alt','tab')
這個(gè)程序運(yùn)行之后會(huì)按下alt+tab,是不是很實(shí)用?
OK,鍵盤操作的學(xué)習(xí)就這么多了。是不是很簡(jiǎn)單?全是干貨建議收藏。
4、小程序——轟炸器
接下來(lái)是一個(gè)小程序:轟炸器,幫你把網(wǎng)絡(luò)噴子治得服服帖帖。
import pyautogui as gui#導(dǎo)入PyAutoGUI模塊 import time#導(dǎo)入時(shí)間模塊 print("三秒之后,程序?qū)?huì)進(jìn)行轟炸,請(qǐng)復(fù)制自己的轟炸文本,做好心理準(zhǔn)備")#提示 time.sleep(3)#預(yù)留時(shí)間切換界面 a=0#初始化變量 while a<100:#重復(fù)100次 a+=1#a自增 gui.hotkey('ctrl','v')#按下ctrl+v gui.hotkey('ctrl','enter')#按下ctrl+enter time.sleep(0.3)#等待0.3秒
這里面,循環(huán)次數(shù)、等待時(shí)間是可以根據(jù)情況改變的。
當(dāng)程序運(yùn)行之后,復(fù)制轟炸內(nèi)容,把光標(biāo)點(diǎn)到你要轟炸的那個(gè)界面做好等待就行。
運(yùn)行效果:
再進(jìn)行一下隨機(jī)話語(yǔ)的功能。
import pyautogui as gui#導(dǎo)入PyAutoGUI模塊并起名gui from time import sleep#導(dǎo)入時(shí)間模塊里面的sleep from random import randint#導(dǎo)入隨機(jī)數(shù)模塊里面的randint print("三秒之后,程序?qū)?huì)進(jìn)行轟炸,做好心理準(zhǔn)備")#提示 sleep(3)#預(yù)留時(shí)間切換界面 a=0#初始化變量 while a<100:#重復(fù)100次 a+=1#a自增 c=randint(1,3)#設(shè)置隨機(jī)數(shù) if c==1:#如果c是1 gui.press(['s','h','a','b','i','1'])#就輸入《優(yōu)美的中國(guó)話》 elif c==2:#如果c是2 gui.press(['c','a','o','n','i','m','a','1'])#就輸入《還是優(yōu)美的中國(guó)話》 else:#如果c是3 gui.press(['g','u','n','n','i','m','a','1'])#就輸入《十分優(yōu)美的中國(guó)話》 gui.hotkey('ctrl','enter')#按下ctrl+enter sleep(0.3)#等待0.3秒
這些話語(yǔ)可以調(diào)整,拿c=1的情況舉例,這時(shí)候就會(huì)敲擊鍵盤上的shabi,之后按1就完成了。要不是typewrite不能整中文還能更簡(jiǎn)便。注意運(yùn)行的時(shí)候把輸入法改回中文。
運(yùn)行效果:
(希望圖片能顯示)在使用之前最好訓(xùn)練一下自己的輸入法,不然輸出可能不對(duì),但大部分輸入法都是可以固定首位的:
這樣就不會(huì)出現(xiàn)輸入錯(cuò)誤的情況了,就算不能固定首位意思也大抵不會(huì)差。
以后遇到網(wǎng)絡(luò)噴子,就用代碼回?fù)羲冒伞?/p>
5、小程序——520個(gè)我愛你
我們還可以完成現(xiàn)在很火的發(fā)送520個(gè)我愛你。
import pyautogui as gui#導(dǎo)入PyAutoGUI模塊并起名gui from time import sleep#導(dǎo)入時(shí)間模塊里面的sleep sleep(3)#預(yù)留時(shí)間切換界面 a=0#初始化變量 while a<=520:#重復(fù)520次 a+=1#a自增 gui.press(['w','o','a','i','n','i','1'])#敲擊woaini,選擇第一項(xiàng)來(lái)輸入“我愛你“ gui.typewrite(str(a))#鍵入字符串a(chǎn) gui.press('enter')#敲擊enter gui.hotkey('ctrl','enter')#打字完畢ctrl+enter發(fā)送 python還是有點(diǎn)慢了,可以耐心等等。
效果:
五、尾聲
PyAutoGUI模塊是一個(gè)很好用也很好玩的自動(dòng)化程序輔助,可以做出來(lái)許多自動(dòng)化小程序,還是很好玩的。
學(xué)完基礎(chǔ)的知識(shí),就要和模塊打交道了。這就是你學(xué)習(xí)的第一個(gè)模塊。
以上就是詳解Python中鍵盤鼠標(biāo)的相關(guān)操作的詳細(xì)內(nèi)容,更多關(guān)于Python鍵盤鼠標(biāo)操作的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章
相關(guān)文章
python3 自動(dòng)打印出最新版本執(zhí)行的mysql2redis實(shí)例
這篇文章主要介紹了python3 自動(dòng)打印出最新版本執(zhí)行的mysql2redis實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-04-04python實(shí)現(xiàn)支持目錄FTP上傳下載文件的方法
這篇文章主要介紹了python實(shí)現(xiàn)支持目錄FTP上傳下載文件的方法,適用于windows及Linux平臺(tái)FTP傳輸文件及文件夾,需要的朋友可以參考下2015-06-06Python中Parser的超詳細(xì)用法實(shí)例
Parser模塊為Python的內(nèi)部解析器和字節(jié)碼編譯器提供了一個(gè)接口,該接口的主要目的是允許Python代碼編輯Python表達(dá)式的分析樹并從中創(chuàng)建可執(zhí)行代碼,這篇文章主要給大家介紹了關(guān)于Python中Parser超詳細(xì)用法的相關(guān)資料,需要的朋友可以參考下2022-07-07Python Flask-Login實(shí)現(xiàn)用戶會(huì)話管理
這篇文章主要介紹了Python Flask-Login實(shí)現(xiàn)用戶會(huì)話管理過(guò)程,F(xiàn)lask-Login為Flask提供用戶會(huì)話管理。它處理登錄、注銷和長(zhǎng)時(shí)間記住用戶會(huì)話等常見任務(wù)2022-12-12python實(shí)現(xiàn)按長(zhǎng)寬比縮放圖片
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)按長(zhǎng)寬比縮放圖片,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-06-06Python PaddleNLP實(shí)現(xiàn)自動(dòng)生成虎年藏頭詩(shī)
這篇文章主要介紹了利用Python PaddleNLP實(shí)現(xiàn)自動(dòng)生成虎年藏頭詩(shī)功能,文中的示例代碼講解詳細(xì),感興趣的同學(xué)可以跟隨小編一起試一試2022-01-01pandas or sql計(jì)算前后兩行數(shù)據(jù)間的增值方法
下面小編就為大家分享一篇pandas or sql計(jì)算前后兩行數(shù)據(jù)間的增值方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-04-04Python實(shí)現(xiàn)基本線性數(shù)據(jù)結(jié)構(gòu)
這篇文章主要實(shí)現(xiàn)四種數(shù)據(jù)結(jié)構(gòu),分別是數(shù)組、堆棧、隊(duì)列、鏈表。大家都知道可以用C語(yǔ)言實(shí)現(xiàn)這幾種數(shù)據(jù)結(jié)構(gòu),其實(shí)Python也可以實(shí)現(xiàn),下面跟著小編一起來(lái)學(xué)習(xí)。2016-08-08