利用Python编写一个闹钟,治好你的拖延症
作者:顾木子吖 发布时间:2021-11-15 12:06:48
导语
相信有不少人的闹钟是设成这样的:
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
“就算全世界把你遗忘,闹钟都会记得你”
来源:https://blog.csdn.net/weixin_55822277/article/details/120951095
![](https://www.aspxhome.com/images/zang.png)
![](https://www.aspxhome.com/images/jiucuo.png)
猜你喜欢
- 迭代首先理解下什么是迭代,python中所有从左往右扫面对象的方式都是可迭代的有哪些方式是可迭代的:1.文件操作 我
- 数据库的操作是当前系统开发必不可少的开发部分之一,尤其是在现在的大数据时代,数据库尤为重要。但是你真的懂得Java与数据库是怎么连接的么?先
- 1. 是什么?MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Da
- 本文实例讲述了JS实现仿Windows经典风格的选项卡Tab切换代码。分享给大家供大家参考,具体如下:这款仿Windows风格的选项卡,带有
- 在multiIndex中选定指定索引的行我们在用pandas类似groupby来使用多重index时,有时想要对多个level中的某个ind
- 这篇文章主要介绍了在SQL Server中处理空值时所涉及的3个问题:计数、使用空表值以及外键处理。用COUNT(*)处理空值大多数集合函数
- Python是一种非常实用的高级编程语言,它的易读性和简洁性使其成为初学者的首选语言。然而,Python的功能远不止于此,它的强大库支持使其
- 这个操作在numpy数组上的操作感觉有点麻烦,但是也没办法。例如 a = [[1,2,3], [4,5,6], [7,8,9]]取 a 的
- 假设我们已经安装好了tensorflow。一般在安装好tensorflow后,都会跑它的demo,而最常见的demo就是手写数字识别的dem
- 1.导入模块import cv2 as cvimport numpy as np 2.OpenCV绘图大致步骤OpenCV 图形绘制步骤(1
- 在开发的过程中,几乎不可能一次性就能写出毫无破绽的程序,断点调试代码是一个普遍的需求。作为前端开发工程师,以往我们开发的JavaScript
- 先使用 Ms Access 压缩修复,然后再去相关的表把备注类型的字段里的“索引”去掉 备注型字段为什么不能超过1950字节?是由于备注型字
- 功能描述:打开一个网站的网页,过5分钟不动作,就会锁定页面,隐藏内容容器,显示一个容器用于输入密码,输入正确的密码来解锁。锁定后即使用户刷新
- pytorch中尝试用多进程加载训练数据集,源码如下:trainloader = torch.utils.data.DataLoader(t
- UUID 全称是 Universally unique identifier,它是一种识别符,使用任意的计算机都可以生成,不需要一个中央数据
- 在风起云涌的互联网浪潮中,产品迭代的速度越来越快。随着用户需求的激增,也不断带来了对设计师能力要求的提高。初入交互设计领域几年来,明显发现可
- 本文实例讲述了python采用getopt解析命令行输入参数的方法,分享给大家供大家参考。具体实例代码如下:import getopt im
- phpMyAdmin可以管理整个MySQL服务器(需要超级用户),也可以管理单个数据库。为了实现后一种,你将需要合理设置MySQL用户,他只
- 什么是CSS裸奔节?CSS裸奔节就是将这整站的css样式都去掉,这样所有的布局,颜色,背景什么的就都没有了(除非你使用table布局),只剩
- 一、过滤器作用过滤器用于进行文本内容格式化处理。二、过滤器的使用方式过滤器可以在插值表达式和 v-bind 中使用。三、过滤器的分类全局过滤