用Python做一个久坐提醒小助手的示例代码


Posted in Python onFebruary 10, 2020

不论是日常的工作还是学习,现代年轻人在电脑屏幕时长数据能让人惊掉下巴,继而引发一系列身体不适的现象。小李也是久坐族中的一员,为了时刻提醒自己起来活动活动,我开发了一款基于PythonGUI编程的久坐提醒小助手。

用Python做一个久坐提醒小助手的示例代码

整体设计

整体的构思类似于一个番茄时钟,提供一个倒计时功能并且在完成计时时发出警告。主要分为如下几个模块,一是时间选择模块,二是按钮模块,控制计时开始、暂停以及恢复,三是倒计时显示模块,并在倒计时完成之后发出警告。

用Python做一个久坐提醒小助手的示例代码

模块一

这一块主要是组合框的设计,并传递所选择时间的具体数值,非常简单。

label2=tkinter.Label(self.win,text='请选择时间间隔:').place(x=40,y=20)
    self.cv=tkinter.StringVar()
    self.com=ttk.Combobox(self.win,textvariable=self.cv)
    self.com.place(x=190,y=20)
    self.com['value']=("15分钟","30分钟","45分钟","60分钟")
    self.com.current(0)
    self.com.bind("<<ComboboxSelected>>", self.get_time)
        
  def get_time(self,event):

    self.minute=int(self.com.get()[:-2])

模块二

这一块主要是三个按键功能的设计,是软件的核心部分。实现的功能与按钮的名称完全一致,当选择了定时的时间,按下开始按钮时,触发倒计时的秒表,并实时显示;按下暂停之后需要暂停倒计时的计数;按下继续之后需要继续倒计时的计数。

用Python做一个久坐提醒小助手的示例代码

其中倒计时的计算,我是通过利用获取目标学习时长的数值加上当前时间计算得到最终计时完成的时间,本来是非常完美的,但是引入了暂停和继续开始这两项功能之后需要做出一定程度的改进,那就是倒计时的计算需要补充暂停的时长。

button=tkinter.Button(self.win,text="开始",command=self.alarm,width=6,height=1)
    button.place(x=40,y=60)
    button2=tkinter.Button(self.win,text="暂停",command=self.pause,width=6,height=1)
    button2.place(x=180,y=60)   
    button3=tkinter.Button(self.win,text="继续",command=self.go_on,width=6,height=1)
    button3.place(x=320,y=60) 
        
  def alarm(self):
    
    self.now=datetime.datetime.now()
    delta=datetime.timedelta(minutes=self.minute)
    self.target=self.now+delta
    self.win.after(0,self.update)
    
  def pause(self):
    
    self.pause_time=datetime.datetime.now()
    self.flag=True
    self.win.after_cancel()
    
  def go_on(self):
    
    self.go_on_now=datetime.datetime.now()
    self.pause_long=self.go_on_now-self.pause_time+self.pause_long
    self.flag=False
    self.win.after(0,self.update)

模块三

把这个倒计时显示模块放置于最醒目的位置,并在完成当前计时时发出警告的消息。核心便是下面的update函数,实现倒计时的实时更新。

用Python做一个久坐提醒小助手的示例代码

def update(self):
    
    now=datetime.datetime.now()
    countdown=self.target-now+self.pause_long
    self.label=tkinter.Label(self.win,text=str(countdown)[:7],font=("黑体",70))
    self.label.place(x=60,y=130)
    if str(countdown)[:7]=='0:00:00':
      tkinter.messagebox.showwarning(title="FBIWarning",message="您已工作{}分钟,请马上离开座位休息片刻!".format(self.minute))
      self.flag=True
      self.win.after_cancel()
    if self.flag==False:
      self.win.after(1,self.update)

最后,希望大家在工作学习之中,经常站起来活动活动筋骨,放松放松大脑,多呼吸新鲜的空气,毕竟身体才是革命的本钱!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python模拟鼠标拖动操作的方法
Mar 11 Python
python查看zip包中文件及大小的方法
Jul 09 Python
Python 判断是否为质数或素数的实例
Oct 30 Python
python3 requests中使用ip代理池随机生成ip的实例
May 07 Python
Python Pandas批量读取csv文件到dataframe的方法
Oct 08 Python
Python实现简单石头剪刀布游戏
Jan 20 Python
python输出电脑上所有的串口名的方法
Jul 02 Python
简单了解Python生成器是什么
Jul 02 Python
python实现通过队列完成进程间的多任务功能示例
Oct 28 Python
Python环境管理virtualenv&amp;virtualenvwrapper的配置详解
Jul 01 Python
Python jieba结巴分词原理及用法解析
Nov 05 Python
Python join()函数原理及使用方法
Nov 14 Python
Python3 元组tuple入门基础
Feb 09 #Python
Python3列表List入门知识附实例
Feb 09 #Python
Python 动态变量名定义与调用方法
Feb 09 #Python
python函数定义和调用过程详解
Feb 09 #Python
详解python 破解网站反爬虫的两种简单方法
Feb 09 #Python
Python字典深浅拷贝与循环方式方法详解
Feb 09 #Python
Python文件操作方法详解
Feb 09 #Python
You might like
ADODB结合SMARTY使用~超级强
2006/11/25 PHP
使用Sphinx对索引进行搜索
2013/06/25 PHP
laravel dingo API返回自定义错误信息的实例
2019/09/29 PHP
表单提交时自动复制内容到剪贴板的js代码
2007/03/16 Javascript
js常见表单应用技巧
2008/01/09 Javascript
mysql输出数据赋给js变量报unterminated string literal错误原因
2010/05/22 Javascript
JavaScript学习笔记(二) js对象
2011/10/25 Javascript
js仿百度有啊通栏展示效果实现代码
2013/05/28 Javascript
基于javascript实现单选及多选的向右和向左移动实例
2015/07/25 Javascript
jQuery+PHP星级评分实现方法
2015/10/02 Javascript
原生js封装的一些jquery方法(详解)
2016/09/20 Javascript
js实现自动图片轮播代码
2017/03/22 Javascript
angularJs中orderBy筛选以及filter过滤数据的方法
2018/09/30 Javascript
原生JS使用Canvas实现拖拽式绘图功能
2019/06/05 Javascript
python实现的守护进程(Daemon)用法实例
2015/06/02 Python
简单讲解Python中的字符串与字符串的输入输出
2016/03/13 Python
在Python中获取两数相除的商和余数方法
2018/11/10 Python
python用post访问restful服务接口的方法
2018/12/07 Python
python实现二维插值的三维显示
2018/12/17 Python
Python正则表达式匹配和提取IP地址
2019/06/06 Python
python实现接口并发测试脚本
2019/06/25 Python
Django框架教程之中间件MiddleWare浅析
2019/12/29 Python
Pyinstaller加密打包应用的示例代码
2020/06/11 Python
python代码能做成软件吗
2020/07/24 Python
如何基于Python pygame实现动画跑马灯
2020/11/18 Python
马来西亚在线时尚女装商店:KEI MAG
2017/09/28 全球购物
美国网上书店:Barnes & Noble
2018/08/15 全球购物
Nordgreen美国官网:在线购买极简主义斯堪的纳维亚手表
2019/07/24 全球购物
会计电算化专业毕业生自荐信
2013/12/20 职场文书
环保倡议书100字
2014/05/15 职场文书
2014年仓管员工作总结
2014/11/18 职场文书
2014年计生协会工作总结
2014/11/21 职场文书
爱心捐款活动总结
2015/05/09 职场文书
少先队工作总结2015
2015/05/13 职场文书
演讲稿之我的初心我的成长
2019/08/12 职场文书
python可视化大屏库big_screen示例详解
2021/11/23 Python