功能: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🏁 操作结束。")
❤️ 转载文章请注明出处,谢谢!❤️