You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python实现每小时喝水提醒触发TypeError,求排查及替代模块推荐

错误排查与解决方案

核心错误原因

你的代码触发TypeError主要有两个问题:

  1. schedule调度传参错误:schedule.every().hour.do(remember_water())里的remember_water()是直接调用函数,会返回None,但do()方法需要传入函数对象(即不带括号的remember_water)。加括号会让函数立即执行一次,而非交给schedule定时调度,这就导致do方法收到了非可调用的None,触发TypeError。
  2. 缺失time模块导入:代码中使用了time.sleep(1),但没有导入time模块,后续运行还会触发NameError,需要补充导入。

修正后的代码

from notifypy import Notify
import schedule
import time  # 补充time模块导入

def remember_water():
    notification = Notify()
    notification.title = "喝水提醒"
    notification.message = "该起身喝水啦,别让身体缺水!"
    notification.send()

# 传入函数对象,而非调用结果
schedule.every().hour.do(remember_water)
while True:
    schedule.run_pending()
    time.sleep(1)

替代模块推荐

如果觉得notifypy或schedule不够顺手,可以试试这些更易用的工具:

  • plyer:跨平台桌面工具库,除了通知还支持其他桌面交互,兼容性强,无需额外系统依赖。
  • win10toast(仅Windows):专为Windows 10/11设计的轻量通知模块,API极简,配置门槛低。
  • desktop-notifier:跨平台通知库,支持自定义图标、通知优先级,适合简单定时通知场景。
  • APScheduler:比schedule功能更丰富的定时任务框架,支持多种调度方式(间隔、cron表达式等),适合复杂定时需求。

内容的提问来源于stack exchange,提问作者Raphi Schilli

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 04:05:41