热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

利用Python编写一个闹钟,治好你的拖延症

起床真是令人困扰的事情,有的人根本不用定闹钟,但有的人提前半个小时闹钟都叫不醒。本文将分享利用Python编写的闹钟脚本,

导语 

相信有不少人的闹钟是设成这样的:

6:20

6:30

6:35

6:37

……

起床真是令人困扰的事情,有的人根本不用定闹钟,但有的人提前半个小时闹钟都叫不醒,你的闹钟怎么定的?

举个粒子:

现在这天气真的就很需要闹钟,每天8点不然真的醒不来

两个闹钟都喊不起,最少需要三个闹钟。需要,而且每5分钟一个。

我是起床困难户{需要5-6个闹钟},但我能克服熬夜早点睡的时候,第二天只需要二、三个闹钟就能起来了。

我的闹钟都是每天晚上亲自检查好然后设置的,因为担心漏掉了,怕早上迟到。

需要三个闹钟,2个隔比较近,1个隔10分钟响,让自己觉得赖床已经好久,更开心的起床......

哈哈哈——今天的话就教教大家来制作一款小闹钟小程序~卡卡通通的外表才适合我嘛!

这款可爱的小闹钟是基于Tkinter做的界面哈——有界面更好看滴!

做的界面也是卡通的动漫的形象啦,当然也是可以随意修改很多界面背景、参数的哈。

一、小科普

1)time 模块

在Python中包含了若干个能够处理时间的库,而time库是最基本的一个,是Python中处理时间的标准库。time库能够表达计算机时间,提供获取系统时间并格式化输出的方法,提供系统级精确计时功能(可以用于程序性能分析)。

time库包含三类函数,以下介绍常用的函数:

  • 时间获取:time()、ctime()、gmtime()   
  • 时间格式化:strftime()、strptime()   
  • 程序计时:sleep()、perf_counter()

2)messagebox模块

messagebox可用在消息提示框、警告框、询问框、错误、关于等会话框,messagebox可以很方便实现相关对话框的弹出。

二、准备中

1)环境安装

该项目运行环境:Python3、Pycharm、Pygame、Tkinter、time模块等一些自带的不一一介绍了哈。库的安装统一使用:

pip install +模块名 或带豆瓣镜像源 pip install -i https://pypi.douban.com/simple/ +模块名

2)素材(音乐+背景可修改)

三、开始敲代码

1)导入模块

from os import environ
environ["PYGAME_HIDE_SUPPORT_PROMPT"] = "1"
import pygame
import time  # 导入此模块,获取当前时间
from tkinter import *
from tkinter import messagebox #弹窗
import threading

2)界面设置

标题,界面的大小宽度,文字等等都设置好了哈。

def sleeptime(hour, min, sec):
    return hour * 3600 + min * 60 + sec
def GUI_TIME():
    window = Tk()
    window.title("来自一位小可爱")
    window.geometry("505x430+300+100")
    canvas = Canvas(window, height=500, width=500)
    image_file = PhotoImage(file="01.gif")
    image = canvas.create_image(0, 0, anchor="nw", image=image_file)
    canvas.pack(side="top")
    Label(window, text="添加闹钟: ").place(x=130, y=200)
    Label(window,text = "帅的人已经醒了,丑的人还在睡觉",fg = "red").place(x = 140,y = 80)
    var_usr_name = StringVar()
    var_usr_name.set("24:59")
    entry_usr_name = Entry(window, textvariable=var_usr_name, background="pink")
    entry_usr_name.place(x=250, y=200)

3)获取当前实时时间

def gg1():
        index = 0
        try:
            my_hour,my_minute = start()
        except:
            messagebox.showwarning("提醒","请注意:是否为中文输入法的:")
            index = 1
        if(index == 0):
            window_sign_up = Toplevel(window)
            window_sign_up.attributes("-toolwindow", 1)
            window_sign_up.wm_attributes("-topmost", 1)
            window_sign_up.geometry("200x100+400+150")
            Label(window_sign_up, text="当前时间为: ").place(x=0, y=10)
            window_sign_up.title("顾木子吖")
            b1 = Button(window_sign_up, text=" 退出 ", command=window.quit,fg = "red")
            b1.place(x=50, y=50)
            str = StringVar()
            l = Label(window_sign_up, textvariable=str,fg = "red").place(x=80, y=10)
            cw = 1
            while cw == 1:
                t = time.localtime()  # 当前时间的纪元值
                fmt = "%H %M"
                times = "%H : %M : %S"
                now = time.strftime(fmt, t)  # 将纪元值转化为包含时、分的字符串
                times = time.strftime(times, t)   #显示的时间
                now = now.split(" ")
                hour = now[0]
                minute = now[1]
                str.set(times)
                if (hour == my_hour and minute == my_minute):
                    str.set("时间到了")
                    play_music()
                time.sleep(0.95)
 
    def start():
        timea = var_usr_name.get()
        my_hourtotal = timea.split(":")  # 时间
        my_hour = my_hourtotal[0]  # 小时
        my_minute = my_hourtotal[1]  # 分钟
        return my_hour,my_minute
    def ff1():
        try:
            ff()
        except:
            messagebox.showwarning("请注意:是否为中文输入法的:")
    def ff():
        thread = threading.Thread(target=gg1)
        thread.daemon = True
        thread.start()

4)设置开始、退出按钮

  btn_sign_up = Button(window, text=" 开始 ", command=lambda: ff())
    btn_sign_up.place(x=130, y=300)
    b1 = Button(window, text=" 退出 ", command=window.quit)
 
    b1.place(x=250, y=300)
    b2 = Button(window,text = " ? ",command = problem_mail)
    b2.place(x=420,y=390)
    window.mainloop()

5)设置到点播放音乐

def play_music():
    #str.set("时间到了")
    filepath = r"良人乐团 - 春节的鞭炮.mp3";
    pygame.mixer.init()
    # 加载音乐
    pygame.mixer.music.load(filepath)
    pygame.mixer.music.play(start=0.0)
    # 播放时长,没有此设置,音乐不会播放,会一次性加载完
    time.sleep(290)
    pygame.mixer.music.stop()

6)额外设置的一个弹窗提醒

def problem_mail():
    messagebox.showinfo("看文末")

四、效果展示

随机展示part1

“帅的人已经起来了,丑的人还在睡觉”

随机展示part2

“就算全世界把你遗忘,闹钟都会记得你”

总结

这不?这个闹钟界面又可爱颜值又高,没有人会拒绝的叭,以后要抢购啥的还可以多设置几个闹钟

准时起来抢东西了哈。

到此这篇关于利用Python编写一个闹钟,治好你的拖延症的文章就介绍到这了,更多相关Python闹钟内容请搜索编程笔记以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程笔记!


推荐阅读
  • 基于dlib的人脸68特征点提取(眨眼张嘴检测)python版本
    文章目录引言开发环境和库流程设计张嘴和闭眼的检测引言(1)利用Dlib官方训练好的模型“shape_predictor_68_face_landmarks.dat”进行68个点标定 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • Python实现变声器功能(萝莉音御姐音)的方法及步骤
    本文介绍了使用Python实现变声器功能(萝莉音御姐音)的方法及步骤。首先登录百度AL开发平台,选择语音合成,创建应用并填写应用信息,获取Appid、API Key和Secret Key。然后安装pythonsdk,可以通过pip install baidu-aip或python setup.py install进行安装。最后,书写代码实现变声器功能,使用AipSpeech库进行语音合成,可以设置音量等参数。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 原文地址:https:www.cnblogs.combaoyipSpringBoot_YML.html1.在springboot中,有两种配置文件,一种 ... [详细]
  • 无损压缩算法专题——LZSS算法实现
    本文介绍了基于无损压缩算法专题的LZSS算法实现。通过Python和C两种语言的代码实现了对任意文件的压缩和解压功能。详细介绍了LZSS算法的原理和实现过程,以及代码中的注释。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • Go GUIlxn/walk 学习3.菜单栏和工具栏的具体实现
    本文介绍了使用Go语言的GUI库lxn/walk实现菜单栏和工具栏的具体方法,包括消息窗口的产生、文件放置动作响应和提示框的应用。部分代码来自上一篇博客和lxn/walk官方示例。文章提供了学习GUI开发的实际案例和代码示例。 ... [详细]
  • 【shell】网络处理:判断IP是否在网段、两个ip是否同网段、IP地址范围、网段包含关系
    本文介绍了使用shell脚本判断IP是否在同一网段、判断IP地址是否在某个范围内、计算IP地址范围、判断网段之间的包含关系的方法和原理。通过对IP和掩码进行与计算,可以判断两个IP是否在同一网段。同时,还提供了一段用于验证IP地址的正则表达式和判断特殊IP地址的方法。 ... [详细]
  • EzPP 0.2发布,新增YAML布局渲染功能
    EzPP发布了0.2.1版本,新增了YAML布局渲染功能,可以将YAML文件渲染为图片,并且可以复用YAML作为模版,通过传递不同参数生成不同的图片。这个功能可以用于绘制Logo、封面或其他图片,让用户不需要安装或卸载Photoshop。文章还提供了一个入门例子,介绍了使用ezpp的基本渲染方法,以及如何使用canvas、text类元素、自定义字体等。 ... [详细]
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
  • 怀疑是每次都在新建文件,具体代码如下 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
author-avatar
as2520_526
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有