如何编写函数实现按按键直至目标PNG对象到达指定屏幕位置?
自动按键控制对象移动到指定位置的Python实现
所需工具
先安装依赖库:
pip install pyautogui
核心思路
- 用图像识别定位屏幕上的黄色对象中心坐标
- 持续按住对应方向键,每隔短时间检查对象位置,直到进入目标点误差范围后松开按键
- 按预设路径依次移动,完成一轮循环
完整代码
import pyautogui import time # 开启安全机制:鼠标移到屏幕左上角时自动终止脚本 pyautogui.FAILSAFE = True def get_object_center(object_png): # 循环查找黄色对象,直到找到其中心坐标 while True: # confidence参数控制识别精度,0-1之间,值越高越严格 center = pyautogui.locateCenterOnScreen(object_png, confidence=0.8) if center: return (center.x, center.y) # 没找到就等待0.1秒后重试 time.sleep(0.1) def move_to_target(object_png, target_pos, key): # 获取对象当前位置 current_x, current_y = get_object_center(object_png) # 设置位置误差范围(±5像素),避免因像素精度问题无法触发停止 tolerance = 5 # 未到达目标区域时持续按键 while not (abs(current_x - target_pos[0]) <= tolerance and abs(current_y - target_pos[1]) <= tolerance): pyautogui.keyDown(key) # 0.1秒后重新检查位置,平衡响应速度和资源占用 time.sleep(0.1) current_x, current_y = get_object_center(object_png) # 到达目标后松开按键,短暂停留确保对象稳定 pyautogui.keyUp(key) time.sleep(0.5) if __name__ == "__main__": # 替换为你的黄色对象PNG截图路径(建议只截对象本身,减少干扰) YELLOW_OBJECT_PNG = "yellow_object.png" # 按顺序定义所有路径点坐标,替换成实际蓝点位置 path_points = [ (800, 600), # n0 起点/终点 (423, 600), # n1 (950, 600), # n2 示例坐标,请自行修改 (950, 300), # n3 示例坐标,请自行修改 (423, 300), # n4 示例坐标,请自行修改 (423, 600), # n5 (800, 600) # 返回n0 ] # 对应每个路径段要按的方向键,顺序必须和path_points匹配 # 方向键参数:左"left"、右"right"、上"up"、下"down" move_keys = ["left", "right", "up", "left", "down", "right"] # 执行一轮完整路径移动 for idx in range(len(path_points) - 1): target = path_points[idx + 1] key = move_keys[idx] print(f"正在移动到目标点 {idx+1}...") move_to_target(YELLOW_OBJECT_PNG, target, key) print("一轮移动循环完成!")
使用说明
- 准备截图:用截图工具截取黄色对象的清晰PNG图片,保存后替换代码中的
YELLOW_OBJECT_PNG路径。 - 修改坐标:把
path_points里的示例坐标替换成实际蓝点的坐标值。 - 匹配方向键:确保
move_keys里的方向键顺序和路径段的移动方向完全对应。 - 运行脚本:打开目标应用并置于前台,运行脚本即可自动执行移动。
- 终止脚本:按
Ctrl+C,或者将鼠标移到屏幕左上角触发安全终止。
内容的提问来源于stack exchange,提问作者Mateusz Pysiek
相关产品推荐
相关产品推荐

