今天心血来潮,想用Python实现一个类似于闹钟的事项提示工具。在坐各位都知道,平常敲代码总是会忘记时间一坐一上午,这样对身体是不好的,所以我今天就要使用Python实现定时提醒功能。
在敲代码之前大致分析一下需要使用到的模块。
-
语音播报模块(pyttsx3)
pip install pywin32 pip install pyttsx3
-
定时任务模块(apscheuler)
pip install apscheuler
-
弹窗模块(win32api)
pip install win32api
脚本逻辑。
-
获取用户输入的代办事项
请输入您的代办事项:喝水
-
获取用户输入的执行时间(单位:min)
请输入您的执行时间:30
-
根据用户输入的执行时间,设置触发器
apscheuler 添加弹窗定时任务
-
触发器执行,在桌面弹出弹出并且语音提示
执行弹窗任务 (win32api.MessageBox)
执行语音提示功能 (pyttsx3.say())
下面附上代码
# 语音播报模块
import pyttsx3
# 使用windows的弹窗模块
import win32api,win32con
# 导入aoscheduler里的调度器
from apscheduler.schedulers.blocking import BlockingScheduler
# 配置调度器的语言和时区
sche = BlockingScheduler(timezone="Asia/Shanghai")
# 日期模块
import datetime
# 捕获用户输入
affair = input("请输入您的代办事项:")
times = input("请输入事项执行时间(min): ")
# 任务函数
def my_job(affair):
# 初始化pyttsx3
engine= pyttsx3.init()
# 播放文字语言/默认女生
engine.say(f"滴滴滴滴滴滴滴滴!您的{affair}事项以到达执行时间")
# 执行缓存的命令并等待完成
engine.runAndWait()
# 弹窗提示
win32api.MessageBox(0,f"您的{affair}事项已到达执行时间","这是周奕呈的闹钟脚本",win32con.MB_OK)
# 关闭apscheduler调度器
sche.shutdown(wait=False)
# 定时函数
def timing():
if affair=="" or times=="":
engine = pyttsx3.init()
engine.say("输入错误")
engine.runAndWait()
win32api.MessageBox(0,"请输入正确的代办事项以及执行时间","这是周奕呈的闹钟脚本",win32con.MB_ICONWARNING)
else:
try:
# 添加定时任务 date:某个特定时间仅运行一次 args:以tuple的形式传参
sche.add_job(my_job,'date',run_date=datetime.datetime.now()+datetime.timedelta(minutes=times),args=[affair]) #若想修改定时时间类型则修改minutes 例:seconds=times
# 启动调度器
sche.start()
except Exception as e:
print(e)
engine = pyttsx3.init()
engine.say("输入错误")
engine.runAndWait()
win32api.MessageBox(0,"请输入正确的代办事项以及执行时间","这是周奕呈的闹钟脚本",win32con.MB_ICONWARNING)
if __name__=="__main__":
timing()
在此奉上该项目地址,供大家使用。
GitHub:https://github.com/renaissancezyc/regularly_remind
Gitee:https://gitee.com/renaissancezyc/regularly_remind