最近在mac上使用pytautogui时候发现屏幕获取的size与截全屏获取的图片的size的大小不一致,根据图片定位的位置鼠标挪移过去发现与真正需要的位置也不一致,最后发现是分辨率的问题。最后想了下,可以根据分辨率来解决这个问题。
import pyautogui
import time
pyautogui.PAUSE = 1 # 调用在执行动作后暂停的秒数,只能在执行一些pyautogui动作后才能使用,建议用time.sleep
pyautogui.FAILSAFE = True # 启用自动防故障功能,左上角的坐标为(0,0),将鼠标移到屏幕的左上角,来抛出failSafeException异常
'''设置屏幕分辨率'''
screenwidth,screenheight = pyautogui.size()
img = pyautogui.screenshot('img/all_screen.png')
screen_dpi = int(img.size[0]/screenwidth)
# screen_dpi就是获取到的分辨率,mac老式电脑是@2x,基本就是2倍分辨率。screen_dpi=2
# 截取图片,这里的图片分辨率是@2x分辨率
img = pyautogui.screenshot("img/screen.png",region(0,0,1280*screen_dpi,800*screen_dpi))
print(img.size)
# 这里截屏时,图片的分辨率就需要在屏幕size上*分辨率
#根据图片定位,再挪移鼠标
img_local = pyautogui.locateOnScreen("img/project.png",confidence=0.7)
#移动鼠标
pyautogui.moveTo(img_local[0]/screen_dpi,img_local[1]/screen_dpi,duration=2,tween=pyautogui.easeInOutQuad)