功能:1. 实时显示鼠标坐标
2. 按 Enter 锁定坐标并开始循环执行:
→ 移动到坐标 → 按住左键 → 光标上移30像素 + 滚轮上滑10次 → 松开左键
3. 按 Esc 随时停止退出
import time
import sys
import subprocess
# ===== 自动安装依赖 =====
required_packages = ["pyautogui", "pynput"]
for pkg in required_packages:
try:
__import__(pkg)
except ImportError:
print(f"📦 未找到 {pkg},正在安装...")
subprocess.check_call([sys.executable, "-m", "pip", "install", pkg, "-i", "https://pypi.tuna.tsinghua.edu.cn/simple"])
import pyautogui
from pynput import keyboard
from pynput.mouse import Controller as MouseController, Button
# ===== 配置参数 =====
SCROLL_TIMES = 10 # 滚轮上滑次数
SCROLL_STEP = -1 # 每次滚轮滚动幅度(负数 = 内容往上)
DRAG_OFFSET = 80 # 鼠标按住后上移的像素
INTERVAL = 0.1 # 每轮循环间隔时间
MOVE_DURATION = 0.1 # 鼠标移动动画时长
mouse = MouseController()
running = False
stop_flag = False
# ===== 键盘监听 =====
def on_press(key):
global running, stop_flag
try:
if key == keyboard.Key.enter:
if not running:
print("\n🚀 开始执行循环(按 Esc 停止)")
running = True
else:
print("⚙ 已在运行中")
elif key == keyboard.Key.esc:
print("\n⏹ 检测到 Esc,准备退出...")
stop_flag = True
return False
except Exception:
pass
# ===== 实时显示鼠标坐标 =====
def show_mouse_position():
print("📍 实时坐标显示中...(按 Enter 锁定坐标并开始,Esc 退出)")
while not running and not stop_flag:
x, y = pyautogui.position()
print(f"\r🖱️ 当前坐标: ({x}, {y})", end='', flush=True)
time.sleep(0.1)
# ===== 主执行逻辑 =====
def perform_loop(x, y):
global stop_flag
i = 0
while not stop_flag:
i += 1
# 移动到指定坐标
pyautogui.moveTo(x, y, duration=MOVE_DURATION)
time.sleep(0.05)
# 按住左键
mouse.press(Button.left)
time.sleep(0.05)
# 光标上移指定像素(模拟拖拽)
pyautogui.moveTo(x, y - DRAG_OFFSET, duration=0.15)
# 同时滚轮上滑若干次
for _ in range(SCROLL_TIMES):
mouse.scroll(0, SCROLL_STEP)
time.sleep(0.05)
# 松开左键
mouse.release(Button.left)
print(f"\r✅ 第 {i} 次拖拽+上滑完成 ({x},{y-DRAG_OFFSET})", end='', flush=True)
time.sleep(INTERVAL)
# ===== 主程序入口 =====
if __name__ == "__main__":
listener = keyboard.Listener(on_press=on_press)
listener.start()
show_mouse_position()
if stop_flag:
print("\n👋 已退出。")
sys.exit(0)
# 锁定坐标
X, Y = pyautogui.position()
print(f"\n🎯 锁定坐标 ({X}, {Y}),开始执行...")
perform_loop(X, Y)
print("\n🏁 操作结束。")
❤️ 转载文章请注明出处,谢谢!❤️