用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中getattr函数使用方法 getattr实现工厂模式
Jan 20 Python
python学习笔记之调用eval函数出现invalid syntax错误问题
Oct 18 Python
Python matplotlib通过plt.scatter画空心圆标记出特定的点方法
Dec 13 Python
Python使用itchat模块实现简单的微信控制电脑功能示例
Aug 26 Python
Python从文件中读取指定的行以及在文件指定位置写入
Sep 06 Python
Pytorch之finetune使用详解
Jan 18 Python
tensorflow如何继续训练之前保存的模型实例
Jan 21 Python
利用 Python ElementTree 生成 xml的实例
Mar 06 Python
Python搭建Keras CNN模型破解网站验证码的实现
Apr 07 Python
如何把python项目部署到linux服务器
Aug 26 Python
详解python tkinter包获取本地绝对路径(以获取图片并展示)
Sep 04 Python
python更新数据库中某个字段的数据(方法详解)
Nov 18 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
mysql,mysqli,PDO的各自不同介绍
2012/09/19 PHP
javascript数组与php数组的地址传递及值传递用法实例
2015/01/22 PHP
PHP设计模式之工厂模式与单例模式
2016/09/28 PHP
浅谈PHP中类和对象的相关函数
2017/04/26 PHP
Jquery 选中表格一列并对表格排序实现原理
2012/12/15 Javascript
jquery ajax方式直接提交整个表单核心代码
2013/08/15 Javascript
JSON.stringify转换JSON时日期时间不准确的解决方法
2014/08/08 Javascript
原生js获取iframe中dom元素--父子页面相互获取对方dom元素的方法
2016/08/05 Javascript
轮播图组件js代码
2016/08/08 Javascript
node.js中express中间件body-parser的介绍与用法详解
2017/05/23 Javascript
微信小程序 获取二维码实例详解
2017/06/23 Javascript
详解jquery选择器的原理
2017/08/01 jQuery
对angularJs中2种自定义服务的实例讲解
2018/09/30 Javascript
layui.tree组件的使用以及搜索节点功能的实现
2019/09/26 Javascript
python基础教程之匿名函数lambda
2017/01/17 Python
PyCharm在win10的64位系统安装实例
2017/11/26 Python
Python使用Scrapy保存控制台信息到文本解析
2017/12/27 Python
聊聊Python中的pypy
2018/01/12 Python
numpy.delete删除一列或多列的方法
2018/04/03 Python
Python3 selenium 实现QQ群接龙自动化功能
2020/04/17 Python
Python使用itcaht库实现微信自动收发消息功能
2020/07/13 Python
python爬虫快速响应服务器的做法
2020/11/24 Python
CSS3转换功能transform主要属性值分析及实现分享
2012/05/06 HTML / CSS
HTML5 Canvas旋转动画的2个代码例子(一个旋转的太极图效果)
2014/04/10 HTML / CSS
写好自荐信的技巧
2013/11/08 职场文书
中学家长会邀请函
2014/02/03 职场文书
基层党支部公开承诺书
2014/05/29 职场文书
毕业生代领毕业材料的授权委托书
2014/09/29 职场文书
2015年医务科工作总结范文
2015/05/26 职场文书
环保建议书作文500字
2015/09/14 职场文书
《乌鸦喝水》教学反思
2016/02/19 职场文书
创业计划书之家教托管
2019/09/25 职场文书
Python 文本滚动播放器的实现代码
2021/04/25 Python
vue实现简单数据双向绑定
2021/04/28 Vue.js
恶魔之树最顶端的三颗果实 震震果实上榜,第一可以制造岩浆
2022/03/18 日漫
MySQL脏读,幻读和不可重复读
2022/05/11 MySQL