用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操作字典类型的常用方法(推荐)
May 16 Python
python中将函数赋值给变量时需要注意的一些问题
Aug 18 Python
python爬取拉勾网职位数据的方法
Jan 24 Python
flask入门之表单的实现
Jul 18 Python
解决Mac下首次安装pycharm无project interpreter的问题
Oct 29 Python
Python3爬取英雄联盟英雄皮肤大图实例代码
Nov 14 Python
Python 计算任意两向量之间的夹角方法
Jul 05 Python
python 叠加等边三角形的绘制的实现
Aug 14 Python
Iconfont(矢量图标)+iconmoon(图标svg互转)配合javascript实现社交分享系统
Apr 21 Python
python中round函数如何使用
Jun 19 Python
python绘图pyecharts+pandas的使用详解
Dec 13 Python
将不规则的Python多维数组拉平到一维的方法实现
Jan 11 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怎样调用MSSQL的存储过程
2006/10/09 PHP
php 缩略图实现函数代码
2011/06/23 PHP
PHP异常Parse error: syntax error, unexpected T_VAR错误解决方法
2014/05/06 PHP
ThinkPHP中使用ajax接收json数据的方法
2014/12/18 PHP
php强制用户转向www域名的方法
2015/06/19 PHP
7个鲜为人知却非常实用的PHP函数
2015/07/01 PHP
PHP获取Exif缩略图的方法
2015/07/13 PHP
php中foreach结合curl实现多线程的方法分析
2016/09/22 PHP
Laravel 5.4向IoC容器中添加自定义类的方法示例
2017/08/15 PHP
yii2.0整合阿里云oss删除单个文件的方法
2017/09/19 PHP
一文掌握PHP Xdebug 本地与远程调试(小结)
2019/04/23 PHP
用js替换除数字与逗号以外的所有字符的代码
2014/06/07 Javascript
jquery 点击元素后,滚动条滚动至该元素位置的方法
2016/08/05 Javascript
js学习之----深入理解闭包
2016/11/21 Javascript
jQuery Validate验证表单时多个name相同的元素只验证第一个的解决方法
2016/12/24 Javascript
nodejs学习笔记之路由
2017/03/27 NodeJs
bootstrap select插件封装成Vue2.0组件
2017/04/17 Javascript
Ionic3 UI组件之autocomplete详解
2017/06/08 Javascript
ionic环境配置及问题详解
2017/06/27 Javascript
浅谈在Vue.js中如何实现时间转换指令
2019/01/06 Javascript
vue和H5 draggable实现拖拽并替换效果
2020/07/29 Javascript
[01:29:31]VP VS VG Supermajor小组赛胜者组第二轮 BO3第一场 6.2
2018/06/03 DOTA
python使用RNN实现文本分类
2018/05/24 Python
python 中pyqt5 树节点点击实现多窗口切换问题
2019/07/04 Python
详解python tcp编程
2020/08/24 Python
opencv python 对指针仪表读数识别的两种方式
2021/01/14 Python
python爬虫scrapy框架之增量式爬虫的示例代码
2021/02/26 Python
css3实例教程 一款纯css3实现的环形导航菜单
2014/10/20 HTML / CSS
马耳他航空公司官方网站:Air Malta
2019/05/15 全球购物
新年抽奖获奖感言
2014/03/02 职场文书
医院见习报告范文
2014/11/03 职场文书
上诉答辩状范文
2015/05/22 职场文书
告知书格式
2015/07/01 职场文书
教师病假条范文
2015/08/17 职场文书
六年级作文之关于梦
2019/10/22 职场文书
《辉夜大小姐想让我告白》第三季正式预告
2022/03/20 日漫