iT邦幫忙

4

【python黑科技-pyautogui】教你用python控制滑鼠與鍵盤

今天來聊聊python中非常酷炫的功能,
控制滑鼠與鍵盤,
理論上,如果你程式功力非常強的話,
甚至可以用這個模組寫出一個「遊戲外掛」,
讓程式操控你的滑鼠與鍵盤幫你玩遊戲

本文測試環境: anaconda, spyder, python3.7

安裝

pyautogui並非內建模組,
需要用pip install pyautogui安裝

注意事項

由於你把滑鼠與鍵盤交給電腦控制,
程式邏輯需小心撰寫,
避免自己不小心就無法控制自己的滑鼠

安全措施:
在程式內加上

pyautogui.PAUSE = 3

使程式每次使用pyautogui的函數前暫停三秒再執行,
在暫停三秒的期間快速移動滑鼠關掉程式

一、滑鼠篇

取得滑鼠座標

import pyautogui
import time
width, height = pyautogui.size() # 取得螢幕寬度、高度
print(width, height)

#每隔一段時間取得滑鼠座標
for i in range(20):
    time.sleep(1) # 暫停一秒
    xloc, yloc = pyautogui.position() # 獲得滑鼠游標
    print(xloc,yloc, end='\r', flush= True)

程式的意思是先取得自己電腦的螢幕寬度、高度,
然後在for迴圈中,
每隔一秒鐘印出你現在的滑鼠座標

移動滑鼠

要移動滑鼠有moveTomoveRel兩種方法,
分別指定滑鼠是以「絕對位置」還是「相對位置」
兩個範例(duration參數設定移動的時間):

  1. 絕對位置
"""
程式功能: 讓滑鼠移到指定位置
"""

import pyautogui

x,y = 300,300
for i in range(3):
    pyautogui.moveTo(x,y,duration=0.5)
    pyautogui.moveTo(x+1200,y,duration=0.5)
    pyautogui.moveTo(x+1200,y+400,duration=0.5)
    pyautogui.moveTo(x,y+400,duration=0.5)
  1. 相對位置
"""
程式功能: 讓滑鼠移動某個位移
"""

import pyautogui

for i in range(3):
    pyautogui.moveRel(300,0,duration=0.5)
    pyautogui.moveRel(0,300,duration=0.5)
    pyautogui.moveRel(-300,0,duration=0.5)
    pyautogui.moveRel(0,-300,duration=0.5)

按下滑鼠

click()可以讓滑鼠按下再放開,
基礎語法為:click(x, y, button='xxx')(xxx可以是left, middle, 或right,若不指定預設按滑鼠左鍵)
舉例來說:

import pyautogui
pyautogui.click(300, 400, button='right', duration=1)

這個指令可以讓滑鼠花一秒鐘移動到座標(300, 400)的位置,
然後按下滑鼠右鍵

click()可以讓滑鼠按下再放開的動作,
如果要拆解成「按下」和「放開」兩個動作,
可以用mouseDown()mouseUp()

拖曳滑鼠

若是想要「拖曳滑鼠」(按住滑鼠左鍵不放,移動滑鼠直到目的地再放開),
可以用dragTo/dragToRel指令,
概念與moveTo/moveRel差不多

二、鍵盤篇

基礎輸入的指令為typewrite()(注意不能輸出中文),
首先執行程式:

import pyautogui
import time

print("請在5秒內開啟記事本並設為焦點視窗")
time.sleep(5) #程式暫停五秒,讓你有時間打開記事本
pyautogui.typewrite(['H','e','l','l','o'],0.1) #每隔0.1秒輸出一個字

然後打開你電腦上的記事本,
便可以用每隔0.1秒輸出一個字的速度打出Hello

就先簡介到這邊啦,讀者如有興趣深究,首推參考資料的這本書,
相信應該寫的比小馬更詳細

參考資料

  1. (書本) Python入門邁向高手之路王者歸來/ 出版社:深石/ 作者: 洪錦魁
    https://ithelp.ithome.com.tw/upload/images/20200301/20117114iS8wGZXAWv.png

尚未有邦友留言

立即登入留言