用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聚类算法之DBSACN实例分析
Nov 20 Python
Python中的descriptor描述器简明使用指南
Jun 02 Python
200 行python 代码实现 2048 游戏
Jan 12 Python
python: 判断tuple、list、dict是否为空的方法
Oct 22 Python
解决Python 命令行执行脚本时,提示导入的包找不到的问题
Jan 19 Python
Python语言检测模块langid和langdetect的使用实例
Feb 19 Python
python根据多个文件名批量查找文件
Aug 13 Python
Python实现链表反转的方法分析【迭代法与递归法】
Feb 22 Python
Python新手学习raise用法
Jun 03 Python
python selenium xpath定位操作
Sep 01 Python
Python制作运行进度条的实现效果(代码运行不无聊)
Feb 24 Python
Python Django获取URL中的数据详解
Nov 01 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
业余方法DIY电子管FM收音机
2021/03/02 无线电
你可能不知道PHP get_meta_tags()函数
2014/05/12 PHP
php实现设计模式中的单例模式详解
2014/10/11 PHP
PHP提高编程效率的20个要点
2015/09/23 PHP
PHP实现的自定义数组排序函数与排序类示例
2016/11/18 PHP
php中namespace及use用法分析
2016/12/06 PHP
PHP 获取 ping 时间的实现方法
2017/09/29 PHP
强大的jquery插件jqeuryUI做网页对话框效果!简单
2011/04/14 Javascript
JavaScript高级程序设计 阅读笔记(十二) js内置对象Math
2012/08/14 Javascript
zTree插件之多选下拉菜单实例代码
2013/11/06 Javascript
js的2种继承方式详解
2014/03/04 Javascript
浅谈JSON和JSONP区别及jQuery的ajax jsonp的使用
2014/11/23 Javascript
js获取当前日期时间及其它操作汇总
2015/04/17 Javascript
jquery捕捉回车键及获取checkbox值与异步请求的方法
2015/12/24 Javascript
JS验证逗号隔开可以是中文字母数字
2016/04/22 Javascript
nodejs个人博客开发第七步 后台登陆
2017/04/12 NodeJs
vue-lazyload使用总结(推荐)
2018/11/01 Javascript
详解小程序退出页面时清除定时器
2019/04/28 Javascript
Vue实现根据hash高亮选项卡
2019/05/27 Javascript
Element-UI+Vue模式使用总结
2020/01/02 Javascript
Python抓取电影天堂电影信息的代码
2016/04/07 Python
django model去掉unique_together报错的解决方案
2016/10/18 Python
Django安装配置mysql的方法步骤
2018/10/15 Python
基于Python的Post请求数据爬取的方法详解
2019/06/14 Python
python3 pathlib库Path类方法总结
2019/12/26 Python
pytorch下使用LSTM神经网络写诗实例
2020/01/14 Python
Python生成随机验证码代码实例解析
2020/06/09 Python
python读取图像矩阵文件并转换为向量实例
2020/06/18 Python
PyCharm中配置PySide2的图文教程
2020/06/18 Python
Python文件名匹配与文件复制的实现
2020/12/11 Python
基于PyInstaller各参数的含义说明
2021/03/04 Python
计算机专业职业生涯规划范文
2014/01/19 职场文书
人事任命通知书
2015/04/21 职场文书
个人职业生涯规划之自我评估篇
2019/09/03 职场文书
win10更新失败无限重启解决方法
2022/04/19 数码科技
MySQL 自动填充 create_time 和 update_time
2022/05/20 MySQL