讲使用PyAutoGUI库来操作鼠标前,我们要先列一下鼠标的下面五种基本操作:
- 移动(move): 移动鼠标指针,直到鼠标指针到屏幕的某个位置
- 单击(click): 用手指点击鼠标左键一下然后放开,一般用于按动按钮等操作
- 右击(right click): 用手指点击鼠标右键一下然后放开,一般是在Windows中用于弹出快捷菜单操作
- 双击(double click): 快速地,连续地用手指点击鼠标左键两下然后放开,双击一般用于打开Windows新窗口,运行程序等
- 拖动(drag): 按住鼠标左键或右键不放同时移动鼠标,称为"拖动",一般用于移动文件,或者画图等操作
通常,我们用程序在对鼠标进行操作时,
1. 我们得先知道鼠标的当前位置(既鼠标指针当前在屏幕的哪个位置)。
首先我们得知道桌面(屏幕)有多大,并且给桌面(屏幕)建立X-Y坐标系。
以1920*1080分辨率的桌面(屏幕)为例
0,0 X坐标 --> 增长方向
+---------------------------+
| | Y 坐标
| | |
| 1920 x 1080 screen | |
| | V
| | 增长方向
| |
+---------------------------+ 1919, 1079
这个X-Y坐标系
- 以桌面(屏幕)的左上角为原点(0,0),
- 从左向右X坐标增长到最大值1919。
- 从上到下Y坐标增长到最大值1079。
这就是我们鼠标在桌面(屏幕)上所有可以指向的区域的坐标点的集合。我们可知道,我们总是可以用(X,Y)来定位鼠标在桌面(屏幕)的当前的指向的位置。所以接下去,我们可以简单的用以下二个函数来获得
- 当前桌面的分辨率
- 当前鼠标所指向的位置
import pyautogui
x,y = pyautogui.size()
print(x,y)
cur_x,cur_y = pyautogui.position()
print(cur_x,cur_y)
运行后可以得到如下输出
1920 1080
947 888
表示当前桌面(屏幕)的分辨率为1920 * 1080,当前鼠标的指针所指向的位置是X= 947, Y=888。
2. 移动鼠标
移动鼠标是我们常用的操作之一,简单的说就是将鼠标移动到桌面(屏幕)的某一个位置,在上一节中,我们已知屏幕上的每个位置都可以由一组(x,y)坐标来标识,所以这个操作很简单,我们用pyautogui.moveTo(1438, 868,duration=0.5)将鼠标指针移动到桌面(屏幕)的(1438, 868)这个位置。
import pyautogui
x,y = pyautogui.size()
print(x,y)
cur_x,cur_y = pyautogui.position()
print(cur_x,cur_y)
pyautogui.moveTo(1438, 868,duration=1)
cur_x,cur_y = pyautogui.position()
print(cur_x,cur_y)
3.单击鼠标
通常,移动鼠标到指定位置后,我们会要做的动作可能有以下几个:单击鼠标,双击鼠标,右击鼠标,此章节我们在第2章节的基础上增加单击鼠标(左击鼠标)的操作。
import pyautogui
x,y = pyautogui.size()
print(x,y)
cur_x,cur_y = pyautogui.position()
print(cur_x,cur_y)
pyautogui.moveTo(1438, 868,duration=1)
cur_x,cur_y = pyautogui.position()
print(cur_x,cur_y)
pyautogui.click()
4. 右击鼠标
通常,移动鼠标到指定位置后,我们会要做的动作可能有以下几个:单击鼠标,双击鼠标,右击鼠标,此章节我们在第2章节的基础上增加右击鼠标的操作。
import pyautogui
x,y = pyautogui.size()
print(x,y)
cur_x,cur_y = pyautogui.position()
print(cur_x,cur_y)
pyautogui.moveTo(1438, 868,duration=1)
cur_x,cur_y = pyautogui.position()
print(cur_x,cur_y)
pyautogui.rightClick()
5. 双击鼠标
通常,移动鼠标到指定位置后,我们会要做的动作可能有以下几个:单击鼠标,双击鼠标,右击鼠标,此章节我们在第2章节的基础上增加双击鼠标的操作。
import pyautogui
x,y = pyautogui.size()
print(x,y)
cur_x,cur_y = pyautogui.position()
print(cur_x,cur_y)
pyautogui.moveTo(1438, 868,duration=1)
cur_x,cur_y = pyautogui.position()
print(cur_x,cur_y)
pyautogui.doubleClick()