用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爬虫框架Scrapy安装使用步骤
Apr 01 Python
python使用百度翻译进行中翻英示例
Apr 14 Python
Python3.x中自定义比较函数
Apr 24 Python
Python selenium 三种等待方式详解(必会)
Sep 15 Python
Python正则表达式分组概念与用法详解
Jun 24 Python
Python数据结构与算法之图的广度优先与深度优先搜索算法示例
Dec 14 Python
python批量读取txt文件为DataFrame的方法
Apr 03 Python
python绘制漏斗图步骤详解
Mar 04 Python
Python爬虫运用正则表达式的方法和优缺点
Aug 25 Python
Python numpy.zero() 初始化矩阵实例
Nov 27 Python
Pycharm添加虚拟解释器报错问题解决方案
Oct 13 Python
python按照list中字典的某key去重的示例代码
Oct 13 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
PHP新手NOTICE错误常见解决方法
2011/12/07 PHP
提高php运行速度的一些小技巧分享
2012/07/03 PHP
作为PHP程序员应该了解MongoDB的五件事
2013/06/03 PHP
解析在zend Farmework下如何创立一个FORM表单
2013/06/28 PHP
PHP检测用户是否关闭浏览器的方法
2016/02/14 PHP
Jquery 快速构建可拖曳的购物车DragDrop
2009/11/30 Javascript
幻灯片带网页设计中的20个奇妙应用示例小结
2012/05/27 Javascript
超简单JS二级、多级联动的简单实例
2014/02/18 Javascript
javascript对JSON数据排序的3个例子
2014/04/12 Javascript
jQuery中:gt选择器用法实例
2014/12/29 Javascript
javaScript的函数对象的声明详解
2015/02/06 Javascript
JavaScript多图片上传案例
2015/09/28 Javascript
JavaScript+CSS实现的可折叠二级菜单实例
2016/02/29 Javascript
JavaScript编写一个简易购物车功能
2016/09/17 Javascript
基于Bootstrap的网页设计实例
2017/03/01 Javascript
vue loadmore 组件滑动加载更多源码解析
2017/07/19 Javascript
angular.js实现购物车功能
2017/10/23 Javascript
Vue实现点击后文字变色切换方法
2018/02/11 Javascript
使用Nuxt.js改造已有项目的方法
2018/08/07 Javascript
详解JavaScript中操作符和表达式
2018/09/12 Javascript
vue中的 $slot 获取插槽的节点实例
2019/11/12 Javascript
Vue Router的手写实现方法实现
2020/03/02 Javascript
微信小程序基于ColorUI构建皮皮虾短视频去水印组件
2020/11/04 Javascript
python中实现指定时间调用函数示例代码
2017/09/08 Python
python matplotlib画图实例代码分享
2017/12/27 Python
python实现朴素贝叶斯算法
2018/11/19 Python
CSS3简单实现照片墙
2014/12/12 HTML / CSS
Html5游戏开发之乒乓Ping Pong游戏示例(三)
2013/01/21 HTML / CSS
HTML5制作酷炫音频播放器插件图文教程
2014/12/30 HTML / CSS
西班牙多品牌鞋店连锁店:Krack
2018/11/30 全球购物
英国奢侈品在线精品店:Hervia
2020/09/03 全球购物
历史专业个人求职信分享
2013/12/20 职场文书
优秀班集体获奖感言
2014/02/03 职场文书
欢迎标语大全
2014/06/21 职场文书
2015年库房管理工作总结
2015/10/14 职场文书
Go 实现英尺和米的简单单位换算方式
2021/04/29 Golang