社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

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

A逍遥之路 • 4 天前 • 45 次点击  

还在为重复性的鼠标点击而烦恼?这个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
 
45 次点击