首頁 > 軟體

詳解Python中鍵盤滑鼠的相關操作

2023-11-04 06:00:51

一、前言

恭喜你,學明白類,你已經學會所有基本知識了。

這章算是一個娛樂篇,十分簡單,瞭解一下pyautogui模組,這算是比較好學還趣味性十足的,而且可以做許多小程式。

本文會對ptautogui模組進行詳細的學習and講解。寫作不易,支援一波~

二、pyautogui模組

pyautogui模組,規範一點大寫就是PyAutoGUI模組,是用來實現自動化指令碼的一個十分得力的小助手。他可以操控鍵盤和滑鼠,可以寫許多工具。

安裝的話就用我們萬能的pip包,相信大家已經安裝過了,沒安裝的話網上有許多教學可以學。

win+R,輸入cmd,再輸入:

pip install pyautogui

你就安裝成功了。之後可以輸入import pyautogui,沒報錯就是成功。

接下來,我們就可以玩轉滑鼠和鍵盤了。模組名字比較長,建議用as取一個別名,但可別取成py啊。

三、滑鼠相關操作

1、滑鼠移動

我們先學習滑鼠移動的相關。first瞭解一下計算機的座標系統。

計算機顯示器的解析度一般是1920x1080,有的不一樣,我們用size函數來獲取使用者顯示器的解析度。他會返回兩個值,要用兩個變數儲存。

import pyautogui as gui
a,b=gui.size()
print(a,b)

輸出:1920 1080(根據使用者顯示器大小而定寬度、長度)

注意,就算是解析度我們也要用“減一”原則,例如你的顯示器寬度1920,那麼最左邊是0,最右邊是1919,1920就越界了。

如果我們想讓滑鼠移動,就要用moveTo,注意T是大寫。他可以填入兩個引數:移動地點的x座標,y座標。

import pyautogui as gui
gui.moveTo(1919,1079)

這個程式可以讓滑鼠瞬移到右下角,是不是很nb?

還可以填第三個引數,是移動所需要的時間,預設0秒。

注意:在滑鼠移動的過程中,要是移動滑鼠他會給你拉回原位置,相當於固定住了,所以把時間調長容易直接動不了,非常的難受。

這裡,教給大家一個東西。pyautogui模組裡面自帶了神奇的變數:FAILSAFE,預設為True。當這個變數為True時,如果滑鼠控制不了了,你就使勁往左上角拉,程式就會報錯。

import pyautogui as gui
gui.FAILSAFE =True
gui.moveTo(1919,1079,5)

這段程式碼滑鼠會移動到右下角,如果在這個過程中使勁往左上角拉就會報錯。

接下來,我們就可以做一個簡單的小程式——滑鼠操控術。

import pyautogui as gui
import random as r
gui.FAILSAFE =True
a=0
print("嘎嘎嘎你的滑鼠被我 操控了")
while a<=100:
    gui.moveTo(r.randint(1,1919),r.randint(1,1079))
    a+=1

這個程式執行後,會把你的滑鼠隨機移動到任意地方100次。

你可以自己調整迴圈次數來整你的好友,前提是他的電腦要有python。

我們把FAILSAFE設定為了True,控制不住的時候就使勁往左上移動就行,要是想整蠱好友就設定成False。好玩不?

另外,如果想在原有基礎上移動,就用move。

import pyautogui
pyautogui.move(100,100,2)

例如這個程式,會花2秒將滑鼠往右移動100格,往下移動100格。 

2、獲取滑鼠位置

之後是position()函數,可以獲取當前滑鼠的位置。

import pyautogui as gui
import time
while True:
    print(gui.position())
    time.sleep(1)

這個程式可以隔1秒輸出一次你的滑鼠的位置。

3、滑鼠點選

如果要讓滑鼠點選,就要用click函數。

pyautogui.click(0,0,button='left') 
pyautogui.click(0,0,button='right') 
pyautogui.click(0,0,button='middle') 

前兩個值還是點選的xy座標,第三個值是點選的鍵,記住要用關鍵字引數的形式,left是左鍵,right是右鍵,middle是中鍵。這個程式是分別用左鍵右鍵中鍵點選左上角。

如果要雙擊左鍵,用doubleClick,雙擊右鍵用rightClick,雙擊中鍵用middleClick。他們三個用法相近,還是要填xy座標。

pyautogui.doubleClick(10,10)
pyautogui.rightClick(10,10)
pyautogui.middleClick(10,10)

執行之後會在10,10的位置雙擊左鍵,雙擊右鍵,雙擊中鍵。

4、按鬆滑鼠

如果我們要按鬆滑鼠就要用mouseDown和mouseUp,mouseDown是按下,mouseUp是鬆開。

import pyautogui as gui
from time import sleep
print("落下")
gui.mouseDown()
sleep(1)
gui.mouseUp()
print("鬆開")

這個程式會先按下滑鼠,等一秒鬆開。

5、拖動視窗

要拖動一個視窗,如果想移動到一個位置用dragTo,還是兩個引數為xy座標,第三個引數為時間,預設為0。

import pyautogui as gui
gui.dragTo(0,0,3)

這個程式會把按住的視窗用3秒拖動到左上角。

如果想在原位置的基礎上移動用dragRel,前兩個引數為要往右移動多少和往下移動多少,第三個引數為時間。

import pyautogui as gui
gui.dragRel(200,0,3)

這個程式會把按住的視窗用三秒時間往右移動200畫素。

同樣,還有一個drag,因為網上我也沒查到相關資料,自己試驗出來的效果···好像和dragRel一樣?我也不知道咋回事,如果有人知道請在評論區指出,謝謝配合。

6、上下滑動

如果想上下滑動(就是移動滾輪),就要用scroll,要填一個引數,為移動的格數,預設是往上滑,加上-負號是往下滑。注意,滑動的時候滑鼠必須停留在那個視窗上否則沒用。

import pyautogui as gui
gui.scroll(-200)

這個程式會在滑鼠停留頁面往下滑動200格。

7、小程式——滑鼠操控術2.0

滑鼠的用法就是這麼多了。他可以做很多的自動化程式。

現在,讓我們把剛才操控滑鼠的程式完善一下。

import pyautogui as gui
import random as r
gui.FAILSAFE =True
a=0
print("嘎嘎嘎你的滑鼠被我 操控了")
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

這個程式還會在原有的基礎上亂點,滑動,整蠱好友的時候別忘了改成False哦~

8、小程式——連點器

接下來,讓我們嘗試做一個連點器。

import pyautogui as gui#匯入pyautogui模組
from time import sleep#匯入time中的sleep函數
gui.SAILSAFE=True#開啟安全功能
a=int(input("要點選幾次?"))#獲取點選次數
print("5秒後程式將執行,請將遊標懸浮於連點介面上,如果控制不住滑鼠請把滑鼠往左上角滑動")#提示
sleep(5)#預留時間
x,y=gui.position()#獲取滑鼠座標
for i in range(a):#重複執行
    gui.click(x,y)#點選
print("連點結束")#提示

效果:

 加上我的手速也才點了這麼多,python還是太慢了,但也滿足需求了。

四、鍵盤相關操作

接下來是鍵盤的相關操作。

1、按鍵的按鬆

按鍵按下,用keyDown,按鍵起來用keyUp,這倆要配合起來用。

import pyautogui as gui
gui.keyDown("shift")
gui.keyUp("shift")

這個程式就是按下鬆開一次shift。

要是不想多打字就用press,它就相當於同時呼叫keyDown和keyUp。

import pyautogui as gui
gui.press("shift")

他與上一個程式效果一樣。

如果想按多個鍵就用列表給他包起來就行了。

import pyautogui as gui
gui.press(['a','left','b'])

這個程式會按a,再按左鍵,再按b,之後就相當於按了ba。

2、鍵入字串

最好用的是typewrite,就是輸入一個字串。注意:一定要確保遊標位置,不然沒有用。

import pyautogui as gui
gui.typewrite('666')

這個程式會在指定位置輸入666。注意:typewrite只能輸入英文,中文不起作用。

typewrite如果後面再放一個引數,就代表輸入每一個字母的間隔時間。

import pyautogui as gui
gui.typewrite('python',1)

這個程式執行之後,會隔1秒輸入1個字元,輸出完python一共要5秒。

是不是很厲害?

它還可以放在列表裡來輸出多個字串,例如這個程式:

import pyautogui as gui
gui.typewrite(['a','left','b'])

注意:這裡的left可是左方向鍵的意思,程式會把他轉換,他會鍵入ba。

有人問了:typewrite和press有啥區別啊?

沒認真看吧?typewrite的意思是輸入字串,press是敲擊鍵盤。left只是在typewrite裡面會發生跳脫,跳脫知不知道?

3、熱鍵

還有一個有用的函數,是hotkey,就是熱鍵,快捷鍵,放上按鍵就能完成一次快捷鍵。

import pyautogui as gui
gui.hotkey('alt','tab')

這個程式執行之後會按下alt+tab,是不是很實用?

OK,鍵盤操作的學習就這麼多了。是不是很簡單?全是乾貨建議收藏。

4、小程式——轟炸器

接下來是一個小程式:轟炸器,幫你把網路噴子治得服服帖帖。

import pyautogui as gui#匯入PyAutoGUI模組
import time#匯入時間模組
print("三秒之後,程式將會進行轟炸,請複製自己的轟炸文字,做好心理準備")#提示
time.sleep(3)#預留時間切換介面
a=0#初始化變數
while a<100:#重複100次
    a+=1#a自增
    gui.hotkey('ctrl','v')#按下ctrl+v
    gui.hotkey('ctrl','enter')#按下ctrl+enter
    time.sleep(0.3)#等待0.3秒

這裡面,迴圈次數、等待時間是可以根據情況改變的。

當程式執行之後,複製轟炸內容,把遊標點到你要轟炸的那個介面做好等待就行。

執行效果:

再進行一下隨機話語的功能。

import pyautogui as gui#匯入PyAutoGUI模組並起名gui
from time import sleep#匯入時間模組裡面的sleep
from random import randint#匯入亂數模組裡面的randint
print("三秒之後,程式將會進行轟炸,做好心理準備")#提示
sleep(3)#預留時間切換介面
a=0#初始化變數
while a<100:#重複100次
    a+=1#a自增
    c=randint(1,3)#設定亂數
    if c==1:#如果c是1
        gui.press(['s','h','a','b','i','1'])#就輸入《優美的中國話》
    elif c==2:#如果c是2
        gui.press(['c','a','o','n','i','m','a','1'])#就輸入《還是優美的中國話》
    else:#如果c是3
        gui.press(['g','u','n','n','i','m','a','1'])#就輸入《十分優美的中國話》
    gui.hotkey('ctrl','enter')#按下ctrl+enter
    sleep(0.3)#等待0.3秒

這些話語可以調整,拿c=1的情況舉例,這時候就會敲擊鍵盤上的shabi,之後按1就完成了。要不是typewrite不能整中文還能更簡便。注意執行的時候把輸入法改回中文。

執行效果:

 (希望圖片能顯示)在使用之前最好訓練一下自己的輸入法,不然輸出可能不對,但大部分輸入法都是可以固定首位的:

 這樣就不會出現輸入錯誤的情況了,就算不能固定首位意思也大抵不會差。

以後遇到網路噴子,就用程式碼回擊他好吧。

5、小程式——520個我愛你

我們還可以完成現在很火的傳送520個我愛你。

import pyautogui as gui#匯入PyAutoGUI模組並起名gui
from time import sleep#匯入時間模組裡面的sleep
sleep(3)#預留時間切換介面
a=0#初始化變數
while a<=520:#重複520次
    a+=1#a自增
    gui.press(['w','o','a','i','n','i','1'])#敲擊woaini,選擇第一項來輸入「我愛你「
    gui.typewrite(str(a))#鍵入字串a
    gui.press('enter')#敲擊enter
gui.hotkey('ctrl','enter')#打字完畢ctrl+enter傳送
python還是有點慢了,可以耐心等等。

效果:

五、尾聲

PyAutoGUI模組是一個很好用也很好玩的自動化程式輔助,可以做出來許多自動化小程式,還是很好玩的。

學完基礎的知識,就要和模組打交道了。這就是你學習的第一個模組。

以上就是詳解Python中鍵盤滑鼠的相關操作的詳細內容,更多關於Python鍵盤滑鼠操作的資料請關注it145.com其它相關文章


IT145.com E-mail:sddin#qq.com