2017年6月20日 星期二

Python邊學邊記錄-pyautogui

Python pyautogui

pyautogui是一個可以自動化操作滑鼠與鍵盤的lib,但是也要注意失控問題!

import pyautogui
pyautogui.PAUSE = 1 # 代表每次呼叫執行動作之後都會停一秒
pyautogui.FAILSAFE = True # 啟用失效安全防護
當啟用了失效安全防護的話,只要將滑鼠移到左上角滑啊滑,就會觸發了!

使用之前,簡單說明一下,左上角的座標是(0,0),右下角是(1919,1079),沒有負值,最主要還是看個人所設置的螢幕解析度為何。
不確定的情況下可以透過指令來取得目前的解析度
pyautogui.size()
width, height = pyautogui.size()
這樣子就可以直接把x、y的值給了width與height了!

接著,我們就試著讓鼠標動一動了,主要是使用pyautogui.moveTo(1, 2, duration=3)
1-x,2-y,3-表是移到那地方需要的秒數,如果不設定的話就預設為0,就是立馬就會到達的意思!

如下圖所見,會看到執行之後就開始跑圈圈,然後我趁著執行間的空檔(pyautogui.PAUSE = 1)把滑鼠弄到左上角去滑啊滑,就會觸發失效安全防護的機刷!
Python pyautogui

如果想取得目前的滑標位置,也可以透用position來取得!
pyautogui.position()

如果想要透過迴圈來一直取得x,y的話,也可以達到。
print('Press Ctrl-C to exit.')
try:
    x, y  = pyautogui.position()
    positionStr = 'X: ' + str(x).rjust(4) + ' Y: ' + str(y).rjust(4)  #  rjust會讓字串靠右,並且佔同樣寬
    print(positionStr, end='')
    print('\b' * len(positionStr), end='', flush=True)
    #  \b用來刪除螢幕上目前行末的字元,故乘上字串長度,可將目前的文字擦掉
except KeyboardInterrupt:
    print('\nDone.')

在已經知道怎麼取得座標之後,再來就是怎麼讓程式幫我們控制點一下!
利用的是click這個method
pyautogui.click(1, 2, button=3)
#  1-x軸,2-y軸,3-左(left)右(right)鍵
pyautogui(100, 100, buggon="left")
#  click是按一下,按了放開的按一下。
#  也有pyautogui.doubleClick()、pyautogui.rightClick(),pyautogui.middleClick()…可使用。

拖拉也可以達成
#  引數的部份一樣是x, y, duration=間隔時間
pyautogui.dragTo()
pyautogui.dragRel()

pyautogui也可以取得螢幕截圖
im = pyautogui.screenshot()
im.getpixel((50, 100))  #  取得該座標的rgb
#  假如取得了(255, 200, 250)
pyautogui.pixelMatchesColor(50, 100, (255, 200, 250))
#  這時候會還傳true,該method就是拿來比對該座標的rgb是否相同。



沒有留言:

張貼留言