如何用Python写一个定时提醒工具:从安装到自动化运行

在工作中,长时间盯着屏幕容易忘记休息,或者忙于任务错过重要提醒。本文教你用Python编写一个定时点击工具(类似“摸鱼点击工具”的轻量版),实现后台运行、定时提醒功能。无需图形界面,纯代码驱动,适合开发者和效率控。文章采用步骤式教学,从环境搭建到最终自动化,每一步都有清晰示例。 前置准备 你需要:Windows系统(本文基于Win10/11)、Python 3.7以上版本、基础命令行操作知识。如

在工作中,长时间盯着屏幕容易忘记休息,或者忙于任务错过重要提醒。本文教你用Python编写一个定时点击工具(类似“摸鱼点击工具”的轻量版),实现后台运行、定时提醒功能。无需图形界面,纯代码驱动,适合开发者和效率控。文章采用步骤式教学,从环境搭建到最终自动化,每一步都有清晰示例。

前置准备

你需要:Windows系统(本文基于Win10/11)、Python 3.7以上版本、基础命令行操作知识。如果还没安装Python,去官网下载安装包,勾选“Add Python to PATH”即可。

第一步:安装依赖库

我们将使用两个核心库:pyautogui(模拟鼠标点击和键盘操作)和 schedule(定时任务管理)。打开终端(CMD或PowerShell),运行以下命令:

pip install pyautogui schedule

如果你遇到权限问题,尝试添加 --user 参数:

pip install --user pyautogui schedule

成功安装后,可以测试一下 pyautogui 是否正常工作。新建一个Python文件 test.py,写入:

import pyautogui
print(pyautogui.size())

运行 python test.py,如果输出类似 Size(width=1920, height=1080) 的屏幕分辨率,说明安装成功。

第二步:编写基础版定时提醒工具

我们的目标是:每隔30分钟,在屏幕右下角弹出一个提醒框,并自动执行一个安全操作(比如打开记事本写一句话)。创建新文件 timer_tool.py,先导入库:

import pyautogui
import schedule
import time
import subprocess
import sys

定义提醒函数 remind()。该函数先弹出系统通知(利用Windows的 msg 命令),然后打开记事本写入提醒文字:

def remind():
    # 弹出系统弹窗
    subprocess.run(["msg", "*", "休息时间到!喝口水或者活动一下。"], shell=True)
    # 打开记事本并写入内容
    pyautogui.hotkey('win', 'r')
    pyautogui.write('notepad')
    pyautogui.press('enter')
    time.sleep(0.5)
    pyautogui.write('现在是休息时间,请站起来活动!')
    pyautogui.hotkey('ctrl', 's')
    time.sleep(0.2)
    pyautogui.write('reminder_log.txt')
    pyautogui.press('enter')

注意:msg 命令在Windows家庭版可能被限制,如果失效,可以换成 pyautogui.alert() 版本的弹窗。下面编写主程序,使用 schedule 库设置每30分钟执行一次:

schedule.every(30).minutes.do(remind)

print("定时提醒已启动,每30分钟提醒一次。按 Ctrl+C 停止。")

while True:
    schedule.run_pending()
    time.sleep(1)

运行该脚本:

python timer_tool.py

你会看到控制台打印启动信息。等待30分钟(或者测试时改成 schedule.every(1).minutes.do(remind) ),看是否弹出提醒并打开记事本。注意:首次运行可能被杀毒软件拦截,因为使用了自动化操作,请添加信任。

第三步:改为静默后台运行

上述脚本依赖控制台窗口,关闭它就停止运行。我们可以让它以无窗口方式运行。新建一个批处理文件 run_timer.bat

@echo off
start /min pythonw timer_tool.py
exit

这里 pythonw.exe 是Python的无窗口版本(隐藏控制台)。确保你的Python安装路径在环境变量中,否则用绝对路径。双击 run_timer.bat,工具会在后台运行,任务管理器中可以看到一个Python进程。要停止它,打开任务管理器结束进程即可。

如果你想让工具在系统启动时自动运行,将该批处理文件放入“启动”文件夹(按 Win+R 输入 shell:startup 打开)。

第四步:增加灵活性与定制功能

定时提醒可以配置更多的操作,比如模拟点击特定位置(类似“摸鱼点击工具”的点击功能)。增加一个 click_action() 函数:

def click_action():
    # 获取屏幕中央坐标
    x, y = pyautogui.size()
    x //= 2
    y //= 2
    pyautogui.click(x, y)  # 模拟点击屏幕中央
    pyautogui.write("摸鱼成功")
    pyautogui.press('enter')

然后将它加入定时任务中,例如每隔1小时执行一次点击动作:

schedule.every(60).minutes.do(click_action)

注意:频繁的自动化点击可能被系统或应用视为异常,建议只在非关键窗口使用(如记事本或桌面)。还可以添加日志功能,记录每次执行的时间:

def log_action(action_name):
    with open("action_log.txt", "a") as f:
        f.write(f"执行:{action_name} 于 {time.ctime()}\n")

remind()click_action() 内部调用 log_action() 即可。

第五步:打包成可执行文件(可选)

如果你不想依赖Python环境,可以用 PyInstaller 打包成exe。安装:

pip install pyinstaller

进入脚本所在目录,运行:

pyinstaller --onefile --noconsole timer_tool.py

参数说明:--onefile 生成单个exe文件;--noconsole 隐藏控制台(等效于pythonw)。生成的exe在 dist 文件夹中。你可以把它放到任何电脑上运行,无需安装Python。注意:打包后的文件较大(约20-50MB),因为包含了Python解释器。

常见问题与调试

问题1:提醒不弹出
检查 msg 命令是否被系统策略禁用。改用 pyautogui.alert("消息内容") 测试:

pyautogui.alert('休息时间到!')

问题2:点击位置不对
使用 pyautogui.position() 获取当前鼠标坐标,记录目标位置:

import pyautogui
pyautogui.displayMousePosition()  # 实时显示坐标

然后在代码中硬编码坐标。

问题3:定时任务未按预期执行
检查循环中的 time.sleep(1) 是否被阻塞。如果任务本身长时间运行(例如弹窗未关闭),后续任务会排队。考虑使用多线程:

import threading
def run_threaded(job_func):
    job_thread = threading.Thread(target=job_func)
    job_thread.start()
schedule.every(30).minutes.do(run_threaded, remind)

总结

通过以上步骤,你已学会用Python搭建一个定时提醒工具,兼具弹窗和模拟点击功能,并可后台运行。这个原理类似“摸鱼点击工具”的自定义自动化,你可以扩展它来完成更多任务:定时打开邮件应用、自动备份文件、定时检查网络等。记住,自动化工具应遵守工作规范,不要用于违规操作。祝你效率提升,劳逸结合!

免责声明:本文内容来源于公开资料、用户提交或站内整理,仅供学习与参考,不构成任何投资、医疗、法律或专业建议。请结合实际情况自行判断,相关风险由使用者自行承担。