Python实现智能闹钟的设计与构建

Python制作电脑闹钟

第一部分先介绍使用的库

作者主要是用以下几个库的分别是tkinter, tkinte.messagebox ,time, pygame,os。

***tkinter介绍

tkinter的作用:做为python中标准GUI工具包,用于创建桌面应用程序窗口、按键、输入框等交互组件。

tkinter的典型用途:创建桌面应用程序界面或者设计表单、菜单、对话框等。

简单示例

root = Tk()#创建tkinter应用程序的主窗口对象,Tk()是tkinter核心类,表示应用程序的主窗口。Root是这个窗口对象的名称,用户可根据自己的需求进行自定义。所有的组件都要依赖于此场口。

root.title("窗口标题")#设置窗口的标题栏文字。title() 是窗口对象的方法,用于修改标题栏显示的内容。参数 "窗口标题" 会显示在窗口的左上角(如下图)。

Label(root, text="Hello World").pack()#作用:创建一个文本标签并自动布局到窗口中。Label是标签组件,用于显示静态文本或者图片,第一个参数是主窗口,第二个参数是标签的文本内容。Pack()是用于对标签进行定位布局的。提醒:如果不调用这个pack()函数,标签是不会显示的。

root.mainloop()#作用是启动tkinter主事件循环,让窗口持续运行。

*** tkinte.messagebox介绍

作用: tkinter 的子模块,专门用于弹出标准消息对话框(如提示、警告、错误框)。

典型用途:第一是显示操作成功/失败的提示。第二是弹出确认对话框(Yes/No 选择)。

***time库介绍

作用:Python 内置的时间处理模块,用于获取时间、延时、计时等操作。

功能:

第一,time.sleep(seconds)暂停程序一定时间。

  • time.time()获取当前时间。
  • time.strftime()第三格式化时间输出.
  • ***pygame库介绍

    作用:是一个游戏开发库,应用于多媒体处理,比如音频图像,事件循环等。

    用途:开发2D游戏,播放背景音乐,处理键盘鼠标事件。

    ***os库介绍

       作用:Python 内置的操作系统交互库,用于处理文件和目录路径、执行系统命令等

    核心功能:

    os.path.join(): 跨平台拼接文件路径。

    os.listdir(): 列出目录内容。

    os.getcwd(): 获取当前工作目录。

    os.system(): 执行系统命令(如打开文件)。

    ****************************************************************************************

    第二部分(介绍具体功能)

    本程序主要是实现在当前设定的时间时,会播放音乐。点击确定按键时,音乐就会暂停。同时用户也可以点击开始计时按键时,程序就开始计时,点击暂停时,结束计时。

    程序画面如下:

    第三部分程序介绍。

    作者在这里就先借介绍下作者写的一些函数。

    函数有1加载已经保存的事件、2保存当前设定的时间到文件中、3设定闹钟、4播放闹钟音乐、5停止闹钟音乐、6开始计时、7停止计时、8计时归零、9更新计时器标签、10更新当前的事件。

  • 加载已经保存的时间
  • TIME_FILE = "alarm_time.txt"  # 定义存储时间的文件名

    其作用是声明文件路径常量,所有时间数据将保存在当前目录的 alarm_time.txt 中。

    os.path.exists(TIME_FILE):检查文件是否存在,避免因文件不存在导致崩溃。

    with open(…) as f:使用上下文管理器安全地打开文件,确保文件正确关闭。

    splitlines():将文件内容按行分割为列表(如 ["12", "30", "45"])。

    提前声明下hour_timer、min_timer、sec_time,这三个是输入框组件。

    delete(0, END):清空输入框内容。0 表示起始位置,END 是 Tkinter 常量,表示末尾。

    insert(0, value):在输入框的起始位置插入值。

    为了防止输入的时间不是数字型数据,所以用到except 的那一部分,这一部分是用于捕获ValueError类型的异常。ValueError通常发生在函数接收到类型正确但值不合理的参数时(例如,将非数字字符串转换为整数)。

    ValueError被触发时,打印一条错误消息,提示“无效的时间值”,并附带异常的具体信息(例如“小时必须介于0-23”)。这有助于调试或通知用户输入存在问题。

    第二、保存当前设定的时间到文件中

    程序说明:尝试以写的方式打开设定的文件,将文件名先用f来代替。再用到f.write()将设定时间写入文件中。将时分秒分别写一行。最后在处理异常现象,捕获所有类型的异常(如文件权限不足、磁盘空间不足、路径错误等)打印错误信息,但程序不会终止,仅提示用户。

    第三个函数:设定闹钟

    程序说明:第一步要先获取输入框里的数字,在获取的过程中,判断先这三个值是否存在,如果存在,就继续执行程序;如果不存在,就弹出请输入正确地时间,之后将输入框里面的变量转化为整形变量。如果输入包含非数字字符(如字母),抛出异常并提示错误。检查时间值是否在合理范围内(小时0-23,分钟和秒0-59)。

    最后将合法时间保存到变量 alarm_time,并调用 save_current_time 函数(需自行实现)持久化存储,窗口也会弹出成功提示。

    第四个函数:播放闹钟

    这里用到pygame库,先使用pygame.mixer.music.load()来加载获取相应的音频文件。在使用pygame.mixer.music.play()来播放加载的音乐。如果出现错误,使用messagebox.showerror()来弹出播放失败。

    第五个函数:停止播放音乐

    这里就是用pygame.mixer.music.stop()这一个函数就可以停止播放音乐。

    第六个函数:开始计时

    如果计时器未运行(timer_running 为 False),则执行启动操作。将 timer_running 设为 True,标记计时器开始运行。start_time 被设置为当前时间戳减去已过去的时间(elapsed_time)。这是为了支持暂停后恢复计时。最后调用updata()来完成窗口画面进行更新。

    第七个函数:停止计时

    这里只用调用计时开关这个全局变量。将其变为flase,就可以停止开始计时函数里的if情况。

    第八个函数:计时器清零

    这个函数只用将计时开关变为flase,已经累计的时间标为0,在修改下标签里面的时间显示就基本完成重置时间。

    第九个函数:更新计时器

    这个函数首先将声明操作全局变量 elapsed_time,表示从计时器启动到当前时刻的总时间

    接着只有在计时器开关为开的情况下,更新时间显示。elapsed_time 是当前时间戳(time.time())减去计时器启动时间(start_time)。最后配置标签内容,并进行每秒更新一次。

    第十个函数:核心时间更新

    说明:首先要先获取当前的时间,通过time.strftime(“%h:%m%s”),并将此时间放到标签中,如果闹钟时间与现在时间一致时,就会播放音乐。此时会弹出时间到了的弹窗。如果点击弹窗里的确定键,就类似与给这个信息框边变成ture,此时就会暂停音乐。最后还是执行每秒执行一次此函数。

    第三部分UI设计

    第一部分是对窗口进行设置窗口对象是clock,窗口的名称是智能闹钟,窗口的大小是400×350像素。第二部分设计是当前时间显示设计,第三部分是闹钟设置的相关组件,组件一是标签,上面显示时分秒,第二个组件是时分秒的输入框。

    第三个组件是按钮,按下时会执行设定闹钟函数。第四部分组件是计时器标签,第五部分是计时器时间显示标签,第六部分是三个按键。总体的画面如文章中的第一张图。

    代码内容放在百度网盘中,欢迎读者下载学习。其中包含着每一步才做说明。

    通过网盘分享的文件:闹钟

    链接: https://pan.baidu.com/s/1YsvT2cUhj0jzoaOn2yNoaw?pwd=a8em 提取码: a8em

    作者:一春秋

    物联沃分享整理
    物联沃-IOTWORD物联网 » Python实现智能闹钟的设计与构建

    发表回复