一、导入模块
import pyautogui
二、常规方法
方法 | 作用 |
---|
size() | 返回监视器的大小 |
onScreen(x, y) | 如果x,y在屏幕内,则为true |
三、鼠标功能
方法 | 作用 |
---|
moveTo(50,10) | 将鼠标移至位置(50,10) |
moveTo(100, 10, duration=5, tween=pyautogui.easeInOutQuad) | 用5秒的时间移动到位置(100,10) |
moveRel(100, 10) | 相对当前位置鼠标向右移动100个像素,向下移动10个像素 |
position() | 返回鼠标的当前位置 |
click() | 鼠标左键单击 |
doubleClick() | 鼠标左键双击 |
tripleClick() | 鼠标左键三击 |
click(x=moveToX, y=moveToY, clicks=num_of_clicks, interval=secs_between_clicks, button=‘left’) | 关键字参数:x坐标,y坐标,点击次数,点击时间间隔,点击的键(button关键字参数可以是’left’, ‘middle’,或’right’) |
mouseDown() | 按住鼠标按钮 |
mouseUp() | 放回鼠标按钮 |
dragTo(300, 400, 2, button=‘left’) | 鼠标左键用“2秒”拖拽到屏幕“300,400”的位置 |
dragRel(30, 0, 2, button=‘left’) | 鼠标左键用“2秒”拖拽到相对当前“右边30”的位置 |
FAILSAFE = True | 在执行PyAutoGUI函数前,如果鼠标光标位于屏幕左上角将引发pyautogui.FailSafeException异常(默认启动) |
scroll(10) | 鼠标滚轮上滚10 |
vscroll() | 垂直滚动 |
四、鼠标运动方式
可用方法有moveTo(), move(), dragTo(),和drag(),格式如下:
pyautogui.moveTo(100, 100, 2, pyautogui.easeInQuad)
参数 | 作用 |
---|
easeInQuad | 使鼠标光标开始缓慢移动,然后加速到达目的地 |
easeOutQuad | 鼠标光标开始快速移动,但在接近目的地时会减慢 |
easeOutElastic | 将超过目的地和“橡皮筋”来回,直到它定居在目的地 |
五、键盘功能
方法 | 作用 |
---|
typewrite(‘Hello world!\n’, interval=0.25) | 每个字符间隔0.25秒输入文本 |
typewrite([‘a’, ‘b’, ‘c’, ‘left’, ‘backspace’, ‘enter’, ‘f1’], interval=secs_between_keys) | 传递一个键名列表进行操作 |
press(‘esc’) | 按键 |
press([‘left’, ‘left’, ‘left’, ‘left’, ‘left’, ‘left’]) | 连续按键 |
keyDown(‘shift’) | 键盘按下 |
keyUp(‘shift’) | 键盘释放 |
hotkey(‘ctrl’, ‘c’) | 热键按住ctrl的同时按下c |
PAUSE = 2.5 | 在PyAutoGUI的所有函数之后添加2.5秒延迟 (默认情况下,暂停设置为0.1秒) |
KEYBOARD_KEYS | 键名的完整列表 |
六、消息框功能
方法 | 作用 |
---|
alert(‘text’,‘title’) | 展示文本和OK按钮 |
confirm(‘text’,‘title’) | 展示文本和OK、Cancel按钮 |
prompt(‘text’,‘title’) | 让用户输入文本并展示OK、Cancel按钮 (如果用户单击“取消”函数将返回None) |
password(‘text’,‘title’, mask=’*’) | 密码输入框 |
七、截图功能
方法 | 作用 |
---|
screenshot() | 返回图像对象 |
screenshot(‘foo.png’) | 返回图像对象,并保存在文件中 |
locateOnScreen(‘looksLikeThis.png’,confidence=0.9) | 在屏幕上查找图像返回(左、顶、宽、高)的第一个位置(配合list函数),如果屏幕上找不到图像返回None,添加confidence关键字参数指定函数在屏幕上定位图像的准确性,需要先安装opencv(pip install opencv-python) |
locateAllOnScreen(‘looksLikeThis.png’,confidence=0.9) | 在屏幕上查找图像返回(左、顶、宽、高)所有位置(配合list函数),如果屏幕上找不到图像返回None,添加confidence关键字参数指定函数在屏幕上定位图像的准确性,需要先安装opencv(pip install opencv-python) |
locateCenterOnScreen() | 功能组合locateOnScreen()和center() |
pixelMatchesColor(100, 200, (130, 135, 144),tolerance=10) | 验证单个像素是否与给定像素匹配,tolerance关键字参数指定每个红色、绿色和蓝色值在匹配时的变化程度 |
八、定位函数
函数 | 作用 |
---|
locateOnScreen(image, grayscale=False) | 返回(左、顶、宽、高)坐标。image在屏幕上。如果在屏幕上找不到提高ImageNotFoundException。 |
locateCenterOnScreen(image, grayscale=False) | 返回第一个找到的实例中心的(x,y)坐标。image在屏幕上。如果在屏幕上找不到提高ImageNotFoundException。 |
locateAllOnScreen(image, grayscale=False) | 返回一个生成器,该生成器为屏幕上的图像生成元组(左、顶、宽、高)。 |
locate(needleImage, haystackImage, grayscale=False) | 返回(左、顶、宽、高)坐标needleImage在……里面haystackImage,如果在屏幕上找不到提高ImageNotFoundException。 |
locateAll(needleImage, haystackImage, grayscale=False) | 返回生成元组(左、顶、宽、高)的生成器needleImage被发现在haystackImage. |
import pyautogui as p
import time
def move_click(self, x, y):
p.moveTo(x, y)
p.click(x, y)
def find_picture_one(self, text):
while True:
x = p.locateCenterOnScreen(text, confidence=0.9)
if x:
self.move_click(x[0], x[1])
time.sleep(0.2)
break
time.sleep(0.5)
def find_picture_two(self, text, text1):
while True:
x = p.locateCenterOnScreen(text, confidence=0.9)
y = p.locateCenterOnScreen(text1, confidence=0.9)
if x:
self.move_click(x[0], x[1])
time.sleep(0.2)
break
if y:
self.move_click(y[0], y[1])
time.sleep(0.2)
break
time.sleep(0.5)
def number(self, text):
lst = []
x = p.locateAllOnScreen(text, confidence=0.9)
for i in x:
lst.append(i[0])
return len(lst)
九、灰度匹配
你可以通过grayscale=True对定位函数进行稍微加速比(约30%-ISH)。这消除了从图像和屏幕截图的颜色,加快了定位,但可能导致假阳性匹配。
>>> import pyautogui
>>> button7location = pyautogui.locateOnScreen('calc7key.png', grayscale=True)
>>> button7location
(1416, 562, 50, 41)
十、获取RGB颜色
方法1
>>> import pyautogui
>>> im = pyautogui.screenshot()
>>> im.getpixel((100, 200))
(130, 135, 144)
方法2
>>> import pyautogui
>>> pix = pyautogui.pixel(100, 200)
>>> pix
RGB(red=130, green=135, blue=144)
>>> pix[0]
130
>>> pix.red
130
官方文档:https://pyautogui.readthedocs.io/en/latest/index.html