用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 相关文章推荐
vc6编写python扩展的方法分享
Jan 17 Python
Python专用方法与迭代机制实例分析
Sep 15 Python
python的pdb调试命令的命令整理及实例
Jul 12 Python
Django ORM框架的定时任务如何使用详解
Oct 19 Python
Python中生成器和迭代器的区别详解
Feb 10 Python
django 将model转换为字典的方法示例
Oct 16 Python
Python常见数据类型转换操作示例
May 08 Python
ML神器:sklearn的快速使用及入门
Jul 11 Python
Python aiohttp百万并发极限测试实例分析
Oct 26 Python
python 实现&quot;神经衰弱&quot;翻牌游戏
Nov 09 Python
Python 实现二叉查找树的示例代码
Dec 21 Python
将Python代码打包成.exe可执行文件的完整步骤
May 12 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 设计模式之观察者模式介绍
2012/02/22 PHP
PHP结合JQueryJcrop实现图片裁切实例详解
2014/07/24 PHP
php实现倒计时效果
2015/12/19 PHP
详解WordPress中添加和执行动作的函数使用方法
2015/12/29 PHP
详解PHP的Yii框架中的Controller控制器
2016/03/29 PHP
详解php中 === 的使用
2016/10/24 PHP
PHP 中 var_export、print_r、var_dump 调试中的区别
2018/06/19 PHP
jQuery-ui引入后Vs2008的无智能提示问题解决方法
2014/02/10 Javascript
jQuery实现下拉框选择图片功能实例
2015/08/08 Javascript
Javascript刷新窗口方法小结
2015/10/21 Javascript
AngularJS基础 ng-model 指令详解及示例代码
2016/08/02 Javascript
javascript判断回文数详解及实现代码
2017/02/03 Javascript
Node.Js生成比特币地址代码解析
2018/04/21 Javascript
tsconfig.json配置详解
2019/05/17 Javascript
jquery实现动态创建form并提交的方法示例
2019/05/27 jQuery
Node.JS枚举统计当前文件夹和子目录下所有代码文件行数
2019/08/23 Javascript
JavaScript简易计算器制作
2020/01/17 Javascript
vue 封装 Adminlte3组件的实现
2020/03/18 Javascript
[05:26]2014DOTA2西雅图国际邀请赛 iG战队巡礼
2014/07/07 DOTA
python多重继承实例
2014/10/11 Python
Python3实现发送QQ邮件功能(html)
2017/12/15 Python
python实现windows下文件备份脚本
2018/05/27 Python
Python键盘输入转换为列表的实例
2018/06/23 Python
Django中自定义admin Xadmin的实现代码
2019/08/09 Python
python2和python3应该学哪个(python3.6与python3.7的选择)
2019/10/01 Python
python编写微信公众号首图思路详解
2019/12/13 Python
Python爬虫实现百度翻译功能过程详解
2020/05/29 Python
浅谈tensorflow 中的图片读取和裁剪方式
2020/06/30 Python
python 实现的IP 存活扫描脚本
2020/12/10 Python
CSS3 flex布局之快速实现BorderLayout布局
2015/12/03 HTML / CSS
慕尼黑山地运动、户外服装和体育用品专家:Sporthaus Schuster
2019/08/27 全球购物
港湾网络笔试题
2014/04/19 面试题
如何写早恋检讨书
2014/09/10 职场文书
学生自我鉴定格式及范文
2014/09/16 职场文书
学期个人自我总结
2015/02/13 职场文书
一定要知道的 25 个 Vue 技巧
2021/11/02 Vue.js