在桌面自动化开发场景中,获取鼠标实时位置和屏幕坐标是非常常见的需求,PyAutoGUI作为Python生态中成熟的GUI自动化库,提供了直接可用的接口来完成这个操作,不需要额外依赖复杂的第三方工具。

一、PyAutoGUI 获取鼠标位置的基础方法
PyAutoGUI内置了position函数,可以直接返回当前鼠标的屏幕坐标,返回值是一个包含x和y坐标的元组,坐标的原点在屏幕左上角,x轴向右递增,y轴向下递增。
基础的使用示例如下:
import pyautogui
# 获取当前鼠标位置
x, y = pyautogui.position()
print(f"当前鼠标坐标:x={x}, y={y}")
如果只需要获取x坐标或者y坐标,也可以通过索引的方式提取:
import pyautogui
mouse_pos = pyautogui.position()
print(f"鼠标x坐标:{mouse_pos[0]}")
print(f"鼠标y坐标:{mouse_pos[1]}")
二、实现鼠标位置实时查看
基础方法只能获取调用函数那一刻的鼠标位置,要实现实时查看,需要结合循环结构,每隔一段时间获取一次坐标并打印输出。为了避免输出过于频繁导致刷屏,可以在每次获取后添加短暂的休眠时间。
实时查看的实现代码如下:
import pyautogui
import time
print("开始实时查看鼠标位置,按Ctrl+C停止")
try:
while True:
# 每隔0.5秒获取一次鼠标位置
x, y = pyautogui.position()
# 使用r让输出在同一行刷新,提升可读性
print(f"r当前鼠标坐标:x={x}, y={y}", end="")
time.sleep(0.5)
except KeyboardInterrupt:
print("n已停止实时查看")
运行上述代码后,移动鼠标就能在控制台看到坐标实时变化,按下Ctrl+C即可停止监听。
三、结合屏幕信息辅助坐标定位
在实际开发中,我们往往还需要知道屏幕的分辨率,避免坐标超出屏幕范围。PyAutoGUI提供了size函数可以获取屏幕的宽度和高度,我们可以把屏幕信息和鼠标位置结合起来展示。
优化后的实时查看代码如下:
import pyautogui
import time
# 获取屏幕分辨率
screen_width, screen_height = pyautogui.size()
print(f"当前屏幕分辨率:{screen_width}*{screen_height}")
print("开始实时查看鼠标位置,按Ctrl+C停止")
try:
while True:
x, y = pyautogui.position()
# 展示坐标同时标注是否在屏幕范围内
in_screen = x <= screen_width and y <= screen_height
status = "在屏幕内" if in_screen else "超出屏幕范围"
print(f"r当前鼠标坐标:x={x}, y={y} ({status})", end="")
time.sleep(0.5)
except KeyboardInterrupt:
print("n已停止实时查看")
四、实际应用场景说明
实时查看鼠标位置的功能主要用在以下场景:
- 编写自动化脚本前,定位需要点击的按钮、输入框等元素的坐标
- 调试自动化脚本时,确认鼠标移动、点击操作的坐标是否符合预期
- 开发需要跟随鼠标操作的辅助工具时,获取实时坐标作为逻辑判断依据
需要注意的是,不同屏幕的缩放比例可能会影响坐标的实际生效位置,如果在使用坐标进行自动化操作时出现偏移,可以先检查系统的显示缩放设置,或者在代码中加入缩放比例的计算逻辑。