如何用Python写一个定时提醒工具:从安装到自动化运行
在工作中,长时间盯着屏幕容易忘记休息,或者忙于任务错过重要提醒。本文教你用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搭建一个定时提醒工具,兼具弹窗和模拟点击功能,并可后台运行。这个原理类似“摸鱼点击工具”的自定义自动化,你可以扩展它来完成更多任务:定时打开邮件应用、自动备份文件、定时检查网络等。记住,自动化工具应遵守工作规范,不要用于违规操作。祝你效率提升,劳逸结合!
