Py学习  »  Python

懒人福音!5行Python代码让电脑自己干活,再也不用重复点鼠标了

A逍遥之路 • 2 周前 • 105 次点击  

还在为重复性的鼠标点击而烦恼?这个Python神器让你彻底解放双手!

你是否遇到过这些痛苦时刻?

想象一下这些场景:

场景一:游戏挂机党的烦恼

  • 玩游戏需要重复点击某个按钮几百次来升级

  • 手指都点酸了,还要继续点下去

  • 一不小心点错了位置,前功尽弃

场景二:办公族的重复劳动

  • 需要在Excel里复制粘贴同样的操作200遍

  • 每天都要登录同样的网站,输入同样的账号密码

  • 批量处理文件,每个都要右键-重命名-输入新名字

场景三:数据录入员的噩梦

  • 从一个系统复制数据到另一个系统

  • 每条数据都要重复:复制-切换窗口-粘贴-保存

  • 一天下来手都快废了

如果你也有过这些经历,那今天这篇文章就是为你准备的!

我要给你介绍一个Python库:PyAutoGUI,它能让你的电脑变成一个听话的小助手,自动帮你完成这些重复性的操作。

PyAutoGUI是什么?为什么这么神奇?

PyAutoGUI是一个Python第三方库,专门用来控制鼠标和键盘。简单来说,就是让你用代码来模拟人工操作

它的核心能力包括:

  • 🖱️ 控制鼠标 :移动、点击、拖拽、滚动

  • ⌨️ 控制键盘:输入文字、按快捷键

  • 📸 截图识别:找到屏幕上的图像位置

  • 🎯 精确定位:根据坐标或图像精确操作

最重要的是,它非常简单!即使你是Python新手,看完这篇文章也能立马上手。

安装PyAutoGUI:一行命令搞定

在开始之前,我们需要先安装PyAutoGUI。打开命令行(Windows按Win+R输入cmd,Mac按Cmd+空格输入terminal),然后输入:

pip install pyautogui

如果你是Mac用户,可能还需要安装一些依赖:

pip install pyautogui pillow

安装完成后,我们就可以开始我们的"偷懒"之旅了!

第一个例子:让鼠标自己移动

让我们从最简单的开始。下面这段代码会让你的鼠标自动移动到屏幕中央:

import pyautogui
import time

# 获取屏幕尺寸
screen_widthscreen_height=pyautogui.size()
print(f"你的屏幕尺寸是:{screen_width}  x {screen_height}")

# 移动鼠标到屏幕中央
center_x=screen_width//2
center_y=screen_height//2

print("3秒后鼠标将移动到屏幕中央...")
time.sleep(3)

pyautogui.moveTo(center_xcenter_yduration=2)
print("鼠标已移动到屏幕中央!")

运行这段代码试试看! 你会发现鼠标真的自己移动了!

小贴士:为了安全起见,PyAutoGUI有一个"紧急停止"功能。如果你把鼠标快速移动到屏幕左上角(0,0位置),程序会自动停止。这样即使程序出错,你也能及时停止它。

实战案例1:自动点赞机器人

现在我们来做一个更有趣的例子。假设你想在某个网页上连续点赞100次(当然,仅限于学习目的哦):

import pyautogui
import time

def auto_like_bot(click_count=10):
    """
    自动点击机器人
    click_count: 点击次数
    """
    print("请在5秒内将鼠标移动到你想要点击的位置...")
    time.sleep(5)
    
    # 获取当前鼠标位置
     current_xcurrent_y=pyautogui.position()
    print(f"将在位置 ({current_x}{current_y}) 进行点击")
    
    print(f"开始连续点击 {click_count} 次...")
    
    for in range(click_count):
        pyautogui.click(current_xcurrent_y)
        print(f"第 {i+1} 次点击完成")
        time.sleep(0.5)  # 每次点击间隔0.5秒
    
    print("任务完成!")

# 运行函数
if__name__=="__main__":
    auto_like_bot(10)  # 点击10次

这个程序会给你5秒时间把鼠标放到想要点击的位置,然后自动点击10次。

实战案例2:自动输入文字

除了点击,我们还可以让电脑自动输入文字。这在需要批量填写表单时特别有用:

import pyautogui
import time

def auto_type_demo():
    """演示自动输入文字功能"""
    
    print("请在5秒内点击你想要输入文字的地方(比如记事本、聊天框等)..." )
    time.sleep(5)
    
    # 要输入的文字内容
    text_to_type="""大家好!
我是通过Python PyAutoGUI自动输入的文字。
这个库真的很神奇!
现在是 {time}""".format(time=time.strftime("%Y-%m-%d %H:%M:%S"))
    
    print("开始自动输入文字...")
    
    # 逐行输入
    for line in text_to_type.split('\n'):
        pyautogui.write(lineinterval=0.1)  # interval控制打字速度
        pyautogui.press('enter')  # 按回车换行
        time.sleep(0.5)
    
    print("文字输入完成!")

# 运行演示
if__name__=="__main__":
    auto_type_demo()

这段代码会自动输入一段文字,就像真人在打字一样!

实战案例3:智能截图并找图点击

这是PyAutoGUI最强大的功能之一:通过图像识别来精确定位和点击。

首先,我们需要截个图作为模板:

import 


    
pyautogui
import time

def take_template_screenshot():
    """截取模板图片"""
    print("5秒后将截取当前屏幕...")
    time.sleep(5)
    
    # 截取全屏
    screenshot=pyautogui.screenshot()
    screenshot.save('screen_template.png')
    print("屏幕截图已保存为 screen_template.png")
    
    # 也可以截取指定区域
    # region = (100, 100, 300, 200)  # (left, top, width, height)
    # region_screenshot = pyautogui.screenshot(region=region)
    # region_screenshot.save('region_template.png')

def find_and_click_image():
    """寻找并点击图像"""
    try:
        # 在屏幕上寻找图像(需要先有模板图片)
        button_location=pyautogui.locateOnScreen('button_template.png'confidence=0.8)
        
        if button_location:
            # 找到了图像,获取中心点坐标
            center=pyautogui.center(button_location)
            print(f"找到目标图像,位置:{center}")
            
            # 点击中心位置
            pyautogui.click(center)
            print("点击完成!")
        else:
             print("未找到目标图像")
            
    except pyautogui.ImageNotFoundException:
        print("图像未找到,请检查模板图片是否存在")

# 先截图,再寻找
if__name__=="__main__":
    take_template_screenshot()
    # 如果你有按钮的模板图片,可以运行下面这行
    # find_and_click_image()

实战案例4:办公自动化 - 批量文件重命名

这个例子展示如何自动化处理文件操作:

import pyautogui
import time
import os

def auto_rename_files():
    """自动重命名文件的演示"""
    
    # 文件新名称列表
    new_names= [
        "报告_2024_01",
        "报告_2024_02"
        "报告_2024_03",
        "报告_2024_04",
        "报告_2024_05"
    ]
    
    print("请确保文件管理器已打开,并且选中了第一个要重命名的文件")
    print("程序将在5秒后开始...")
    time.sleep(5)
    
    for inew_name in enumerate(new_names):
         print(f"正在重命名第 {i+1} 个文件为: {new_name}")
        
        # 按F2键重命名(Windows系统)
        pyautogui.press('f2')
        time.sleep(0.5)
        
        # 清空当前名称并输入新名称
        pyautogui.hotkey('ctrl''a')  # 全选
        time.sleep(0.2)
        pyautogui.write(new_name)
        time.sleep(0.5)
        
        # 按回车确认
        pyautogui.press('enter')
        time.sleep(0.5)
        
        # 移动到下一个文件
        pyautogui.press('down')
        time.sleep(0.5)
    
    print("批量重命名完成!")

# 注意:这个例子需要你手动准备好文件
# 运行前请确保:
# 1. 打开文件管理器
# 2. 选中第一个要重命名的文件
# 3. 确保有足够的文件可以重命名
if__name__=="__main__":
    auto_rename_files()

实战案例5:游戏挂机助手

这个例子对游戏玩家特别有用(仅用于学习,请遵守游戏规则):

import pyautogui
import time
import random

def game_auto_clicker():
    """游戏自动点击助手"""
    
    # 定义多个点击位置(你需要根据游戏界面调整这些坐标)
    click_positions= [
        (500300),  # 位置1
        (600400),  # 位置2
        (550350),  # 位置3
    ]
    
    print("游戏挂机助手启动!")
    print("将在以下位置进行随机点击:"click_positions)
    print("5秒后开始,请确保游戏窗口处于活动状态...")
    time.sleep(5)
    
    click_count=0
    
    try:
        while True:
            # 随机选择一个位置
            pos=random.choice(click_positions)
            
            # 在位置附近随机偏移,模拟真人操作
            x=pos[0+random.randint(-1010)
            y=pos[1+random.randint(-1010)
            
            # 点击
            pyautogui.click(xy)
            click_count+=1
            
            print(f"第 {click_count} 次点击:({x}{y})")
            
            # 随机等待时间,避免过于规律
            wait_time=random.uniform(13)
            time.sleep(wait_time)
            
            # 可以设置最大点击次数
            if click_count>=100:
                break
                
    except KeyboardInterrupt:
        print("程序被用户停止")
    
    print(f"总共点击了 {click_count} 次")

# 使用前请注意:
# 1. 修改click_positions为你游戏中需要点击的实际坐标
# 2. 遵守游戏规则,不要影响其他玩家
if__name__=="__main__":
    game_auto_clicker()

进阶技巧:让你的自动化更智能

1. 安全机制:设置紧急停止

import pyautogui

# 设置安全机制
pyautogui.FAILSAFE=True  # 鼠标移到左上角时停止程序
pyautogui.PAUSE=1        # 每个操作间自动暂停1秒

2. 获取鼠标位置的小工具

import pyautogui
import time

def mouse_position_tracker():
    """实时显示鼠标位置,方便确定坐标"""
    
    print("鼠标位置追踪器启动!按Ctrl+C停止")
    
    try:
        while True:
            xy=pyautogui.position()
            print(f"鼠标位置: ({x}{y})"end='\r')
            time.sleep(0.1)
    except KeyboardInterrupt:
        print("\n追踪器已停止")

if__name__=="__main__":
     mouse_position_tracker()

3. 智能等待:等待颜色变化

import pyautogui
import time

def wait_for_color_change(xytarget_colortimeout=30):
    """
    等待指定位置的颜色变化
    x, y: 监测位置
    target_color: 目标颜色 (R, G, B)
    timeout: 超时时间(秒)
    """
    
    start_time=time.time()
    
    while time.time() -start_time<timeout:
        current_color=pyautogui.pixel(xy)
        
        if current_color==target_color:
            print(f"检测到颜色变化:{current_color}")
            return True
            
        time.sleep(0.1)
    
    print("等待超时")
    return False

# 使用示例
if__name__ =="__main__":
    # 等待位置(500, 300)变成红色
    if wait_for_color_change(500300, (25500)):
        print("颜色变化成功,继续执行后续操作...")
        pyautogui.click(500300)

常见问题和注意事项

问题1:程序运行太快怎么办?

import pyautogui

# 方法1:设置全局暂停
pyautogui.PAUSE=0.5  # 每个操作后暂停0.5秒

# 方法2:在关键操作间加延时
import time
pyautogui.click(100100)
time.sleep(1)  # 手动添加1秒延时
pyautogui.click(200200)

问题2:如何处理不同分辨率的屏幕?

import pyautogui

def get_relative_position(x_percenty_percent ):
    """
    根据屏幕比例计算实际坐标
    x_percent, y_percent: 0-1之间的比例值
    """
    screen_widthscreen_height=pyautogui.size()
    x=int(screen_width*x_percent)
    y=int(screen_height*y_percent)
    return xy

# 使用示例:点击屏幕50%,50%的位置(即中央)
center_xcenter_y=get_relative_position(0.50.5)
pyautogui.click(center_xcenter_y)

问题3:如何让程序看起来更像真人操作?

import pyautogui
import random
import time

def human_like_click(xy):
    """模拟人类点击的函数"""
    
    # 1. 先移动到附近位置
    nearby_x=x+random.randint(-55)
    nearby_y=y+random.randint(- 55)
    
    pyautogui.moveTo(nearby_xnearby_y
                    duration=random.uniform(0.51.0))
    
    # 2. 随机短暂停顿
    time.sleep(random.uniform(0.10.3))
    
    # 3. 移动到目标位置
    pyautogui.moveTo(xyduration=random.uniform(0.10.3))
    
    # 4. 点击
    pyautogui.click()
    
    # 5. 随机停顿
    time.sleep(random.uniform(0.51.5))

def human_like_typing(text):
    """模拟人类打字的函数"""
    
    for char in text:
        pyautogui.write(char)
        # 随机打字速度
        time.sleep(random.uniform(0.050.2))
        
        # 偶尔暂停,模拟思考
        if random.random() <0.1:  # 10%概率暂停
            time.sleep(random.uniform(0.52.0))

# 使用示例
if__name__=="__main__":
    human_like_click(500300)
    human_like_typing("Hello, I'm typing like a human!")

PyAutoGUI让你成为效率达人

通过这篇文章,我们从零开始学习了PyAutoGUI这个强大的自动化库。让我们回顾一下都学了什么:

🎯 核心技能

  • 鼠标控制:移动、点击、拖拽、滚动

  • 键盘控制:输入文字、快捷键操作

  • 屏幕捕获:截图、图像识别、颜色检测

  • 智能等待:等待条件满足再执行操作

🛠️ 实用场景

  • 游戏挂机:自动升级、自动任务

  • 办公自动化:批量文件处理、数据录入

  • 网页操作:自动填表、数据采集

  • 重复任务:任何需要重复点击的操作

💡 进阶技巧

  • 安全机制:紧急停止、异常处理

  • 人性化操作:随机延时、模拟真人行为

  • 智能判断:颜色检测、图像识别

  • 图形界面:制作用户友好的工具

PyAutoGUI就像给你的电脑安装了一双"无形的手",它能帮你完成那些枯燥重复的操作,让你有更多时间专注于真正重要的事情。

现在就开始你的自动化之旅吧!记住,偷懒是程序员的美德,用技术让生活更轻松才是正道!

转发、收藏、在看,是对作者最大的鼓励!👏
关注逍遥不迷路,Python知识日日补!






           对Python,AI,自动化办公提效,副业发展等感兴趣的伙伴们,扫码添加逍遥,限免交流群

备注【成长交流】

图片

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/183781
 
105 次点击