python写小程序-用python编写一个闹钟小程序
今天看到了一个闹钟的视频,于是想到了不如自己也编写一个。让我们先来理一下思路,界面用tkinter编辑,主要是其他的GUI也没用过,datetime获取本地时间。。。。。。
1.好的,思路理完了,让我们来敲代码吧。先创建一个AlarmClock类继承自Tk,控件什么的随便放放,也不用追求什么美观了。
class AlarmClock(Tk):
def __init__(self):
super().__init__()
self.title('我的闹钟')
self.minsize(width=300, height=300)
# 设置控件
Label(self, text='现在时间:', font=('Arial', 15)).place(x=10, y=10)
self.now_time = str(datetime.now()).split('.')[0] #获取本地时间
self.var_nowtime = StringVar(value=self.now_time)
Label(self, textvariable=self.var_nowtime, font=('Arial', 15), bg='#D6EAF8').place(x=50, y=50)
# 闹钟的时间设置部分用了三个entry控件输入时分秒
Label(self, text='设置闹钟:', font=('Arial', 15)).place(x=10, y=90)
self.var_hour = StringVar(value='00')
self.var_min = StringVar(value='00')
self.var_sec = StringVar(value='00')
self.entry_hour = Entry(self, textvariable=self.var_hour, font=('Arial', 15), bg='#D6EAF8', width=3,
justify='center')
self.entry_hour.place(x=60, y=130)
Label(self, text=':', font=('Arial', 15)).place(x=105, y=130)
self.entry_min = Entry(self, textvariable=self.var_min, font=('Arial', 15), bg='#D6EAF8', width=3,
justify='center')
self.entry_min.place(x=120, y=130)
Label(self, text=':', font=('Arial', 15)).place(x=165, y=130)
self.entry_sec = Entry(self, textvariable=self.var_sec, font=('Arial', 15), bg='#D6EAF8', width=3,
justify='center')
self.entry_sec.place(x=180, y=130)
# 因为只能设定一个闹钟,所以再次设定的话要重置
self.btn_replace = Button(self, text='重置', font=('Arial', 12), width=5, command=self.replace)
self.btn_replace.place(x=70, y=180)
# 开关按钮控制闹钟的开和关,初始是OFF状态,点击变成ON状态启动闹钟
self.btn_begin = Button(self, text='OFF', font=('Arial', 12), width=5, command=self.beginning)
self.btn_begin.place(x=150, y=180)
下面是界面图
4)72V({PY5V_L7B9~BRWBVO.png
2.接下来就是编辑两个按钮的功能函数了
开关按钮
def beginning(self):
flag = self.btn_begin['text'] # 定义一个flag来表示闹钟的状态
# 如果是打开状态就什么也不做
if flag == 'ON':
return
# 如果是关闭状态,就把text变为ON,三个输入框变为不可编辑
else:
self.btn_begin['text'] = 'ON'
self.entry_hour['state'] = DISABLED
self.entry_min['state'] = DISABLED
self.entry_sec['state'] = DISABLED
# 获取三个输入框内的时间
set_time = '%s:%s:%s' % (self.entry_hour.get(), self.entry_min.get(), self.entry_sec.get())
list_time = []
for i, j in zip(set_time.split(':'), self.now_time.split(' ')[-1].split(':')):
# 计算离闹钟启动还有多少时间
list_time.append(abs(int(i) - int(j)))
messagebox.showinfo(title='设置成功', message='距离启动还有%d小时%d分%d秒' % tuple(list_time))
重置按钮
def replace(self):
# 重置按钮把三个输入框内容变为00,同时变为可编辑状态,开关按钮变为OFF
self.var_hour.set('00')
self.var_min.set('00')
self.var_sec.set('00')
self.btn_begin['text'] = 'OFF'
self.entry_hour['state'] = NORMAL
self.entry_min['state'] = NORMAL
self.entry_sec['state'] = NORMAL
messagebox.showinfo(title='重置成功', message='重置成功')
3.现在Label显示的本地时间是静止的,要想让它动起来则需要在死循环内不断使用update()方法,所以我们再加一个死循环的方法timer
def timer(self):
player = ctypes.windll.kernel32 # 这个模块我也不是太清楚,这里是用来产生蜂鸣的
while True:
self.now_time = str(datetime.now()).split('.')[0]
self.var_nowtime.set(self.now_time)
self.update()
set_time = '%s:%s:%s' % (self.entry_hour.get(), self.entry_min.get(), self.entry_sec.get())
if self.btn_begin['text'] == 'ON':
# 设定时间和本地时间一致,闹钟就响1.5秒
if set_time == self.now_time.split(' ')[-1]:
for i in range(3):
# 人耳能听到的频率是20~20000HZ,这里设定2000HZ,500ms
player.Beep(2000, 500)
time.sleep(1) # 1秒钟更新一次
到这里这个简单的小程序就完成了,是不是很简单呢。代码其实还有很多可以扩展的地方,比如可以设定多个闹钟(就像手机上一样)。还可以定时关机什么的,看你自由发挥了。其实代码很简单,难的是把界面编辑的好看美观。如果有什么疑问或指教,欢迎交流。
image.png
这是最终的效果图,在设定完时间后点击开关按钮会弹出提示框。
python写小程序-用python编写一个闹钟小程序相关推荐
- java写便签_如何编写一个便签程序(用Java语言编写)
如何编写一个便签程序(用Java语言编写) 热度:336 发布时间:2011-02-18 11:44:16 如何编写一个便签程序(用Java语言编写) 因为以前没有好好学习Java,都搞忘了,请大 ...
- python编程100个小程序-用python编写一个闹钟小程序
今天看到了一个闹钟的视频,于是想到了不如自己也编写一个.让我们先来理一下思路,界面用tkinter编辑,主要是其他的GUI也没用过,datetime获取本地时间...... 1.好的,思路理完了,让我 ...
- Python写阴阳师脚本带GUI又是一个学习小技巧
Python写阴阳师脚本带GUI 需要用到环境 Python3. pycharm.天天模拟器.阴阳师. 准备库 pip install pyautogui pip install pywin32 需要 ...
- Python写阴阳师脚本带GUI又是一个学习小技巧!
需要用到环境 Python3. pycharm.天天模拟器.阴阳师. 准备库 pip install pyautogui pip install pywin32 12 需要用到的全部库 import ...
- 用python做一个简单的投票程序_如何编写一个自动投票程序
展开全部 此文章为ocean所有32313133353236313431303231363533e59b9ee7ad9431333335346138,版权归ocean所有 如何编写投票程序,大致分为这 ...
- python做一个闹钟软件下载_Python编写一个闹钟功能
Python编写一个闹钟功能 音频文件放入和.py文件同级的目录下 import winsound # 导入此模块实现声音播放功能 import time # 导入此模块,获取当前时间 # 提示用户设 ...
- python写rest服务_Python 如何创建一个简单的REST接口
问题 你想使用一个简单的REST接口通过网络远程控制或访问你的应用程序,但是你又不想自己去安装一个完整的web框架. 解决方案 构建一个REST风格的接口最简单的方法是创建一个基于WSGI标准(PEP ...
- 利用C#编写一个水准测量近似平差程序
一.代码界面展示 整个界面主要就是就整个界面而言,其实主要使用到的控件就是Menu,tabControl,dataGridView,richtextbox. 二.代码运算结果展示 1.导入数据 这里就 ...
- 让 new bing 使用 GPT-4 编写一个令人满意的程序全过程赏析
让 new bing 使用 GPT-4 编写一个令人满意的程序全过程赏析 标签:new bing.GPT-4 文章目录 让 new bing 使用 GPT-4 编写一个令人满意的程序全过程赏析 前言 ...
最新文章
- Fedora中安装 Shutter步骤介绍
- 关于silverlight5 打印功能收集
- 解决MyEclipse2015启动时:Java was started but returned exit code=1问题
- [YTU]_2417 C语言习题 字符串长度
- java快速排序泛型,如何进行对C# .NET通用泛型进行快速排序?
- 【windows gdi+】GDI+ Image类加载图片时异常问题处理与分析
- 别小看这不起眼的电阻,里面有很多学问!
- impdp使用network_link导入
- 项目管理系列之项目范围时间及资源管理(一)
- asp.net用户注销或者关闭网页时清除用户Cookie
- pitr 原理_PostgeSQL 数据库备份与恢复实验 (PITR)
- R语言爬虫系列(1)XML抓取表格数据
- GTJ2018如何导出全部工程量_新清单计量规范征求意见稿第二期来啦!来看看那些让你烦恼的操作如何解决...
- 系统、驱动相关软件下载
- 双目立体匹配算法:ELAS
- OKR 与绩效考核结合的推进行业案例:医药行业
- 如何打开linux字符界面,Linux字符界面转图形界面
- ETC和车联网安全认证的基本原理的分析和比较
- mac的鼠标滚动方向和触摸板方向,一个插件搞定
- kinect java_Kinect for Java