在我的2倍屏设备上,鼠标移动不准确。
直接上演示代码
import pyautogui
screenSize = pyautogui.size()
print(screenSize)
# 输出:Size(width=1512, height=982)。 这是屏幕尺寸,以dip(设备独立像素device-independent pixel)度量。
buttonPoint = pyautogui.locateCenterOnScreen('test.png')
print(buttonPoint)
# 输出:Point(x=2443, y=424)。可见x比screenSize.width还大,这是以像素进行度量的。
# 该函数的原理其实就是pyautogui对屏幕进行截图,并在截图上找到目标位置,因此是以像素单位作为度量。
# 这就是问题所在
# 如果没有根据屏幕倍率对像素进行转换,直接把像素坐标用到鼠标相关函数,就是错误的。
pyautogui.moveTo(buttonPoint.x, buttonPoint.y)
# 此时,发现鼠标移到了屏幕最边缘。
screenScale = 2 # 屏幕缩放比例
pyautogui.moveTo(buttonPoint.x / screenScale, buttonPoint.y / screenScale)
# 此时,鼠标才能移动到目标位置。
【上述代码仅做演示,更好的处理方法应该封装出一个函数,能根据屏幕倍率对像素位置进行转换。】
标签:pyautogui,倍率,鼠标,像素,屏幕,buttonPoint From: https://www.cnblogs.com/ZJT7098/p/17695938.html