在本节中,你将学习如何利用 pyautogui  移动鼠标,追踪它在屏幕上的位置,但首先需要理解 pyautogui 如何处理坐标。

pyautogui 的鼠标函数使用x、y 坐标。图 18-1 中展示了计算机屏幕的坐标系统。它与 17 章中讨论的图像坐标系统类似。原点的x、y 都是零,在屏幕的左上角。向右 x 坐标增加,向下 y 

坐标增加。所有坐标都是正整数,没有负数坐标。分辨率是屏幕的宽和高有多少像素。如果屏幕的分辨率设置为 1920 × 1080,那么左上角的坐标是(0,0),右下角的坐标是(1919,1079)。

pyautogui.size() 函数返回两个整数的元组,包含屏幕的宽和高的像素数。在交互式环境中输入下面内容:


Java 控制 鼠标移至 单击 java控制鼠标移动_python

分辨率是屏幕的宽和高有多少像素。如果屏幕的分辨率设置为 1920 × 1080,那么左上角的坐标是(0,0),右下角的坐标是(1919,1079)。

pyautogui.size() 函数返回两个整数的元组,包含屏幕的宽和高的像素数。在交互式环境中输入下面内容:

 

>>>  import  pyautogui
>>>  pyautogui.size()
(1920,  1080)
>>>  width,  height  =  pyautogui.size()

在分辨率为 1920 × 1080 的计算机上,pyautogui.size() 返回(1920,1080)。根据屏幕分辨率的不同,返回值可能不一样。你可以将来自 pyautogui.size() 
的宽和高存在变量中,如 width 和 height,让程序的可读性更好。

1   移动鼠标
既然你理解了屏幕坐标,就让我们来移动鼠标。pyautogui.moveTo() 函数将鼠标立即移动到屏幕的指定位置。表示 x、y  坐标的整数值分别构成了函数的第一个和第二个参数。可选的 
duration 整数或浮点数关键字参数,指定了将鼠标移到目的位置所需的秒数。如果不指定,默认值是零,表示立即移动(在 PyAutoGUI 函数中,所有的 duration 
关键字参数都是可选的)。在交互式环境中输入以下内容:
>>>  import  pyautogui
>>>  for  i  in  range(10):
pyautogui.moveTo(100,  100,  duration=0.25)
pyautogui.moveTo(200,  100,  duration=0.25)
pyautogui.moveTo(200,  200,  duration=0.25)
pyautogui.moveTo(100,  200,  duration=0.25)

这个例子根据提供的坐标,以正方形的模式顺时针移动鼠标,移动了 10 次。每次移动耗时 0.25 秒,因为有关键字参数指定 
duration=0.25。如果没有指定函数调用的第三个参数,鼠标就会马上从一个点移到另一个点。
pyautogui.moveRel() 函数相对于当前的位置移动鼠标。下面的例子同样以正方形的模式移动鼠标,只是它从代码开始运行时鼠标所在的位置开始,按正方形移动:
>>>  import  pyautogui
>>>  for  i  in  range(10):
pyautogui.moveRel(100,  0,  duration=0.25)
pyautogui.moveRel(0,  100,  duration=0.25)
pyautogui.moveRel(-100,  0,  duration=0.25)
pyautogui.moveRel(0,  -100,  duration=0.25)

pyautogui.moveRel() 也接受 3 个参数:向右水平移动多少个像素,向下垂直移动多少个像素,以及(可选的)花多少时间完成移动。为第一第二个参数提供负整数,鼠标将向左或向上移动。

2   获取鼠标位置
通过调用 pyautogui.position() 函数,可以确定鼠标当前的位置。它将返回函数调用时,鼠标 x、y  坐标的元组。在交互式环境中输入以下内容,每次调用后请移动鼠标:

>>>  pyautogui.position()
(311,  622)
>>>  pyautogui.position()
(377,  481)
>>>  pyautogui.position()
(1536,  637)

当然,返回值取决于鼠标的位置。