用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 Web框架Pylons中使用MongoDB的例子
Dec 03 Python
Python实现高效求解素数代码实例
Jun 30 Python
Django自定义分页与bootstrap分页结合
Feb 22 Python
详解Python 模拟实现生产者消费者模式的实例
Aug 10 Python
Python 判断 有向图 是否有环的实例讲解
Feb 01 Python
python关闭占用端口方式
Dec 17 Python
Python图像处理库PIL的ImageEnhance模块使用介绍
Feb 26 Python
Python 抓取数据存储到Redis中的操作
Jul 16 Python
Python图像处理之膨胀与腐蚀的操作
Feb 07 Python
Python中对象的比较操作==和is区别详析
Feb 12 Python
Python爬虫进阶之Beautiful Soup库详解
Apr 29 Python
Django Paginator分页器的使用示例
Jun 23 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新手上路(十一)
2006/10/09 PHP
php实现的Captcha验证码类实例
2014/09/22 PHP
PHP unlink与rmdir删除目录及目录下所有文件实例代码
2018/02/07 PHP
PHP多线程模拟实现秒杀抢单
2018/02/07 PHP
PHP safe_mode开启对于PHP系统函数有什么影响
2020/11/10 PHP
NodeJS学习笔记之网络编程
2014/08/03 NodeJs
js模仿php中strtotime()与date()函数实现方法
2015/08/11 Javascript
jQuery+css实现的切换图片功能代码
2016/01/27 Javascript
JS实时弹出新消息提示框并有提示音响起的实现代码
2016/04/20 Javascript
jQuery文字横向滚动效果的实现代码
2016/05/31 Javascript
javascript读取文本节点方法小结
2016/12/15 Javascript
JavaScript表单验证的两种实现方法
2017/02/11 Javascript
js异步编程小技巧详解
2017/08/14 Javascript
webpack搭建vue 项目的步骤
2017/12/27 Javascript
Element Table的row-class-name无效与动态高亮显示选中行背景色
2018/11/30 Javascript
layer页面跳转,获取html子节点元素的值方法
2019/09/27 Javascript
JS操作JSON常用方法(10w阅读)
2020/12/06 Javascript
解决python nohup linux 后台运行输出的问题
2018/05/11 Python
Django 实现购物车功能的示例代码
2018/10/08 Python
python实现在图片上画特定大小角度矩形框
2018/10/24 Python
NumPy 基本切片和索引的具体使用方法
2019/04/24 Python
Python爬虫动态ip代理防止被封的方法
2019/07/07 Python
Python利用WMI实现ping命令的例子
2019/08/14 Python
Pandas之read_csv()读取文件跳过报错行的解决
2020/04/21 Python
python uuid生成唯一id或str的最简单案例
2021/01/13 Python
中国领先的专业演出票务网:永乐票务
2016/08/29 全球购物
伦敦最有品味的百货:Liberty London
2016/11/12 全球购物
Swisse官方海外旗舰店:澳大利亚销量领先,自然健康品牌
2017/12/15 全球购物
HealthElement海外旗舰店:新西兰大卖场
2018/02/23 全球购物
如何利用cmp命令比较文件
2016/04/11 面试题
高中自我鉴定
2013/12/20 职场文书
委托书样本
2014/04/02 职场文书
机械机修工岗位职责
2014/08/03 职场文书
全国优秀教师事迹材料
2014/08/26 职场文书
2015财务年终工作总结范文
2015/05/22 职场文书
西柏坡观后感
2015/06/08 职场文书