Python基础之pyautogui模块(详细总结鼠标键盘操作)
Python基礎之鼠標操作
文章目錄
- Python基礎之鼠標操作
-
- 1. GUI 控制功能
-
- 1.1 自動 防故障功能
- 1.2 停頓功能
- 2. 鼠標操作
-
- 2.1 控制鼠標移動
- 2.2 控制鼠標點擊
- 2.3 控制鼠標拖動
- 2.4 控制鼠標滾動
- 3. 屏幕處理
-
- 3.1 獲取屏幕截圖
- 3.2 識別圖像
- 4. 鍵盤輸入
-
- 4.1 鍵盤輸入函數
- 4.2 鍵盤特殊按鍵
- 4.3 快捷鍵
- 5. 提示信息框
-
- 5.1 提示框/警告框
- 5.2 選擇框
- 5.3 密碼輸入
- 5.4 普通輸入
- 6. 實例
-
- 6.1 鼠標控制 鼠標畫一個正方形
- 6.2 獲取鼠標的實時位置
- 6.3 獲取鼠標位置 與 所在位置的顏色
- 6.4 自動點贊程序
1. GUI 控制功能
控制鼠標鍵盤使用的模塊為:pyautogui,這個模塊操作起鼠標鍵盤的時候,非常的迅速,而且如果該模塊控制了鼠標后,程序比較難關閉,這時我們有兩個方法專門針對以上的情況:
1.1 自動 防故障功能
pyautogui.FAILSAFE =False
默認這項功能為True, 這項功能意味著:當鼠標的指針在屏幕的最坐上方,程序會報錯;目的是為了防止程序無法停止;
1.2 停頓功能
pyautogui.PAUSE = 1
意味著所有pyautogui的指令都要暫停一秒;其他指令不會停頓;這樣做,可以防止鍵盤鼠標操作太快;
2. 鼠標操作
2.1 控制鼠標移動
1. 獲得屏幕分辨率
print(pyautogui.size()) # 返回所用顯示器的分辨率; 輸出:Size(width=1920, height=1080)
width,height = pyautogui.size()
print(width,height) # 1920 1080
2. 移動鼠標
- 移動到指定位置
pyautogui.moveTo(100,300,duration=1)
將鼠標移動到指定的坐標;duration 的作用是設置移動時間,所有的gui函數都有這個參數,而且都是可選參數;
- 按方向移動
pyautogui.moveRel(100,500,duration=4) # 第一個參數是左右移動像素值,第二個是上下,
向右移動100px,向下移動500px, 這個過程持續 1 秒鐘;
3. 獲取鼠標位置
print(pyautogui.position()) # 得到當前鼠標位置;輸出:Point(x=200, y=800)
2.2 控制鼠標點擊
- 單擊鼠標
# 點擊鼠標
pyautogui.click(10,10) # 鼠標點擊指定位置,默認左鍵
pyautogui.click(10,10,button='left') # 單擊左鍵
pyautogui.click(1000,300,button='right') # 單擊右鍵
pyautogui.click(1000,300,button='middle') # 單擊中間
- 雙擊鼠標
pyautogui.doubleClick(10,10) # 指定位置,雙擊左鍵
pyautogui.rightClick(10,10) # 指定位置,雙擊右鍵
pyautogui.middleClick(10,10) # 指定位置,雙擊中鍵
- 點擊 & 釋放
pyautogui.mouseDown() # 鼠標按下
pyautogui.mouseUp() # 鼠標釋放
2.3 控制鼠標拖動
- 拖動到指定位置
pyautogui.dragTo(100,300,duration=1)
將鼠標拖動到指定的坐標;duration 的作用是設置移動時間,所有的gui函數都有這個參數,而且都是可選參數;
- 按方向拖動
pyautogui.dragRel(100,500,duration=4) # 第一個參數是左右移動像素值,第二個是上下,
向右拖動100px,向下拖動500px, 這個過程持續 1 秒鐘;
2.4 控制鼠標滾動
控制鼠標滾動的函數是scroll(), 傳入一個整數的參數,說明向上或向下滾動多少個單位;單位根據操作系統不同而不同;
pyautogui.scroll(300) # 向上滾動300個單位;
3. 屏幕處理
3.1 獲取屏幕截圖
我們控制鼠標的操作,不能盲目的進行,所以我們需要監控屏幕上的內容,從而決定要不要進行對應的操作, pyautogui 提供了一個方法screenshot(),可以返回一個Pillow的image對象;
這里有三個常用函數:
im = pyautogui.screenshot():返回屏幕的截圖,是一個Pillow的image對象
im.getpixel((500, 500)):返回im對象上,(500,500)這一點像素的顏色,是一個RGB元組
pyautogui.pixelMatchesColor(500,500,(12,120,400)) :是一個對比函數,對比的是屏幕上(500,500)這一點像素的顏色,與所給的元素是否相同;
im = pyautogui.screenshot()
im.save('屏幕截圖.png')
保存屏幕截圖;
3.2 識別圖像
首先,我們需要先獲得一個屏幕快照,例如我們想要點贊,我們就先把大拇指的圖片保存下來;然后使用函數:locateOnScreen(‘zan.png’) ,如果可以找到圖片,則返回圖片的位置,如:Box(left=25, top=703, width=22, height=22);如果找不到圖片,則返回None;
如果,屏幕上有多處圖片可以匹配,則需要使用locateAllOnScreen(‘zan.png’) ,如果匹配到多個值,則返回一個list,參考如下:
import pyautogui
pyautogui.PAUSE = 1# 圖像識別(一個)
btm = pyautogui.locateOnScreen('zan.png')
print(btm) # Box(left=1280, top=344, width=22, height=22)# 圖像識別(多個)
btm = pyautogui.locateAllOnScreen('zan.png')
print(list(btm)) # [Box(left=1280, top=344, width=22, height=22), Box(left=25, top=594, width=22, height=22)]
pyautogui.center((left, top, width, height)) 返回指定位置的中心點;這樣,我們就可以再配合鼠標操作點擊找到圖片的中心;參考實例:《4.4 自動點贊程序》
4. 鍵盤輸入
4.1 鍵盤輸入函數
pyautogui.keyDown() : 模擬按鍵按下;
pyautogui.keyUp() : 模擬按鍵釋放;
pyautogui.press() : # 就是調用keyDown() & keyUp(),模擬一次按鍵;
pyautogui.typewrite('this',0.5) : 第一參數是輸入內容,第二個參數是每個字符間的間隔時間;
pyautogui.typewrite(['T','h','i','s']):typewrite 還可以傳入單字母的列表;
舉例:
pyautogui.keyDown('shift') # 按下shift
pyautogui.press('4') # 按下 4
pyautogui.keyUp('shift') # 釋放 shift
輸出: $ ;
pyautogui.typewrite('$$$$', 0.5)
緩慢的輸出:$$$$
4.2 鍵盤特殊按鍵
有時我們需要輸入一些特殊的按鍵,比如向左的箭頭,這些有相對應的鍵盤字符串表示,例如:
pyautogui.typewrite(['T','i','s','left','left','h',]) # 輸出:This
解釋:這里的left就是向左的箭頭;諸如此類的鍵盤字符串,還有很多,參考下表:
| 鍵盤字符串 | 說明 |
|---|---|
| enter(或return 或 \n) | 回車 |
| esc | ESC鍵 |
| shiftleft, shiftright | 左右SHIFT鍵 |
| altleft, altright | 左右ALT鍵 |
| ctrlleft, ctrlright | 左右CTRL鍵 |
| tab (\t) | TAB鍵 |
| backspace, delete | BACKSPACE 、DELETE鍵 |
| pageup, pagedown | PAGE UP 和 PAGE DOWN鍵 |
| home, end | HOME 和 END鍵 |
| up, down, left,right | 箭頭鍵 |
| f1, f2, f3…. f12 | F1…….F12鍵 |
| volumemute, volumedown,volumeup | 聲音變大變小靜音(有些鍵盤沒有) |
| pause | PAUSE鍵,暫停鍵 |
| capslock | CAPS LOCK 鍵 |
| numlock | NUM LOCK 鍵 |
| scrolllock | SCROLLLOCK 鍵 |
| insert | INSERT鍵 |
| printscreen | PRINT SCREEN鍵 |
| winleft, winright | Win鍵(windows ) |
| command | command鍵(Mac OS X ) |
| option | option(Mac OS X) |
4.3 快捷鍵
如果我們需要模擬復制的快捷鍵 ctrl + c ,如果用前面的方法,則代碼為:
pyautogui.keyDown('ctrl')
pyautogui.keyDown('c')
pyautogui.keyUp('c')
pyautogui.keyUp('ctrl')
快捷鍵的按鍵與釋放順序非常關鍵,這時我們可以使用 pyautogui.hotkey(),這個函數可以接受多個參數,按傳入順序按下,再按照相反順序釋放。上述快捷鍵 ctrl + c ,可以將代碼變為:
pyautogui.hotkey('ctrl','c')
5. 提示信息框
5.1 提示框/警告框
import pyautogui
a = pyautogui.alert(text='This is an alert box.', title='Test')
print(a)
輸出如下圖:點擊確定,返回值為‘OK’
5.2 選擇框
import pyautogui
a = pyautogui.confirm('選擇一項', buttons=['A', 'B', 'C'])
print(a)
輸出如下圖:點擊B選項,返回值為‘B’
5.3 密碼輸入
import pyautoguia = pyautogui.password('Enter password (text will be hidden)')
print(a)
輸出如下圖:輸入密碼,顯示為密文,點擊OK,返回值為剛剛輸入的值;
5.4 普通輸入
import pyautoguia = pyautogui.prompt('請輸入一個數字:')
print(a)
輸出如下圖:顯示為明文,點擊OK,返回值為剛剛輸入的值;
6. 實例
6.1 鼠標控制 鼠標畫一個正方形
for i in range(2): # 畫正方形pyautogui.moveTo(200,200,duration=1)pyautogui.moveTo(200,400,duration=1)pyautogui.moveTo(400,400,duration=0.5)pyautogui.moveTo(400,200,duration=2)
6.2 獲取鼠標的實時位置
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# author:Zhang Kai time:import pyautogui
import timetry:while True:x,y = pyautogui.position()posi = 'x:' + str(x).rjust(4) + ' y:' + str(y).rjust(4)print('\r',posi,end='')time.sleep(0.5)except KeyboardInterrupt:print('已退出!')
顯示效果:
6.3 獲取鼠標位置 與 所在位置的顏色
import pyautogui
import timetry:while True:x,y = pyautogui.position()rgb = pyautogui.screenshot().getpixel((x,y))posi = 'x:' + str(x).rjust(4) + ' y:' + str(y).rjust(4) + ' RGB:' + str(rgb)print('\r',posi,end='')time.sleep(0.5)except KeyboardInterrupt:print('已退出!')
顯示效果:
6.4 自動點贊程序
我們需要將所有的文章點贊,本頁上的點贊完成后,就滾動鼠標,把新加載的文章也全部點贊;
代碼如下:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# author:Zhang Kai import pyautogui
import timedef zan():time.sleep(0.5) # 等待 0.5 秒left, top, width, height = pyautogui.locateOnScreen('zan.png') # 尋找 點贊圖片;center = pyautogui.center((left, top, width, height)) # 尋找 圖片的中心pyautogui.click(center) # 點擊print('點贊成功!')while True:if pyautogui.locateOnScreen('zan.png'):zan() # 調用點贊函數else:pyautogui.scroll(-500) # 本頁沒有圖片后,滾動鼠標;print('沒有找到目標,屏幕下滾~')
運行后,會逐個進行點贊:
Pycharm中的輸入如下:
總結
以上是生活随笔為你收集整理的Python基础之pyautogui模块(详细总结鼠标键盘操作)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [LeetCode]Basic Calc
- 下一篇: 幼儿园故事《小魔怪要上学》公开课教案反思