- 内容提要
- 作者简介
- 技术评审者简介
- 致谢
- 译者序 会编程的人不一样
- 前言
- 本书的读者对象
- 编码规范
- 什么是编程
- 本书简介
- 下载和安装 Python
- 启动 IDLE
- 如何寻求帮助
- 聪明地提出编程问题
- 小结
- 第一部分 Python 编程基础
- 第1章 Python 基础
- 第2章 控制流
- 第3章 函数
- 第4章 列表
- 第5章 字典和结构化数据
- 第6章 字符串操作
- 第二部分 自动化任务
- 第7章 模式匹配与正则表达式
- 第8章 读写文件
- 第9章 组织文件
- 第10章 调试
- 第11章 从 Web 抓取信息
- 第12章 处理 Excel 电子表格
- 第13章 处理 PDF 和 Word 文档
- 第14章 处理 CSV 文件和 JSON 数据
- 第15章 保持时间、计划任务和启动程序
- 第16章 发送电子邮件和短信
- 第17章 操作图像
- 第18章 用 GUI 自动化控制键盘和鼠标
- 附录A 安装第三方模块
- 附录B 运行程序
- 附录C 习题答案
18.3 控制鼠标移动
在本节中,你将学习如何利用pyautogui移动鼠标,追踪它在屏幕上的位置,但首先需要理解pyautogui如何处理坐标。
pyautogui的鼠标函数使用x、y坐标。图18-1中展示了计算机屏幕的坐标系统。它与17章中讨论的图像坐标系统类似。原点的x、y都是零,在屏幕的左上角。向右x坐标增加,向下y坐标增加。所有坐标都是正整数,没有负数坐标。
图18-1 分辨率为1920 × 1080的计算机屏幕上的坐标
分辨率是屏幕的宽和高有多少像素。如果屏幕的分辨率设置为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,让程序的可读性更好。
18.3.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个参数:向右水平移动多少个像素,向下垂直移动多少个像素,以及(可选的)花多少时间完成移动。为第一第二个参数提供负整数,鼠标将向左或向上移动。
18.3.2 获取鼠标位置
通过调用pyautogui.position() 函数,可以确定鼠标当前的位置。它将返回函数调用时,鼠标x、y坐标的元组。在交互式环境中输入以下内容,每次调用后请移动鼠标:
>>> pyautogui.position() (311, 622) >>> pyautogui.position() (377, 481) >>> pyautogui.position() (1536, 637)
当然,返回值取决于鼠标的位置。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论