返回介绍

18.3 控制鼠标移动

发布于 2024-01-22 21:44:06 字数 2146 浏览 0 评论 0 收藏 0

在本节中,你将学习如何利用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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文