控制台版本

思路

Project 1 是一个时间提醒助手,从打开程序开始计时,每两个小时打开一个 Youtube 上的视频链接。我想也许能够做一个更完善的版本——以开机时间为原点,计算上机的时长,每两个小时弹出一个 MessageBox 提示休息。

代码
  1. import time
  2. import os
  3. from datetime import datetime
  4. import psutil
  5. import sys
  6. from time import sleep
  7. import Tkinter as tk
  8. import tkMessageBox
  9.  
  10. count = 0
  11. while 1:
  12. os.system('cls') #清屏实现动态显示
  13. bTime = datetime.fromtimestamp(psutil.boot_time()) #获取开机时间
  14. print "Boot Time:", #不换行输出
  15. print bTime
  16. cTime = datetime.now() #获取当前时间
  17. print "Current Time:",
  18. print cTime
  19. dTime = (cTime - bTime) #计算用机时长
  20. print "Running Seconds:",
  21. print dTime.seconds,
  22. print "s"
  23. time = int(dTime.seconds)
  24. if (time/7200 > count):
  25. tkMessageBox.showinfo(title = 'Notice', message = 'You Should Have a Rest') #弹出提示框
  26. count+=1
  27. sleep(1)
  28.  
  29. if __name__=="__main__":
  30. main()
效果

GUI 版本

思路

既然都用上了 Tkinter,何不直接来一个 GUI 界面呢。不过如果是 Tkinter 的话,代码就需要完全重构了。

代码
  1. #coding=utf-8
  2. import os
  3. from datetime import datetime
  4. import psutil
  5. import sys
  6. from time import sleep
  7. from Tkinter import *
  8. import tkMessageBox
  9. import time
  10.  
  11. def tick():
  12. global time1
  13. # 获取当前系统时间
  14. time2 = time.strftime('%H:%M:%S')
  15. # 动态显示
  16. if time2 != time1:
  17. time1 = time2
  18. clock.config(text=time2)
  19. clock.after(200, tick)
  20.  
  21. def timer():
  22. global dTime1
  23. bTime = datetime.fromtimestamp(psutil.boot_time())
  24. cTime = datetime.now()
  25. dTime2 = (cTime - bTime).seconds
  26. if dTime2 != dTime1:
  27. dTime1 = dTime2
  28. runn.config(text=str(dTime2)+' s')
  29. runn.after(800, timer)
  30.  
  31. def msg():
  32. global count
  33. if (dTime1/7200 > count):
  34. tkMessageBox.showinfo(title = 'Notice', message = 'You Should Have a Rest Now')
  35. count+=1
  36. tips.config(text="累计提示次数:"+str(count))
  37. tips.after(800, msg)
  38.  
  39. root = Tk()
  40.  
  41. #标题栏
  42. root.title('Tik')
  43. #窗体尺寸
  44. #root.geometry('200x100')
  45.  
  46. #时钟
  47. nclock = Label(root, text="当前时间", font=('DengXian', 15, 'bold'), relief=GROOVE)
  48. nclock.grid(row=0, column=0)
  49. time1 = ''
  50. clock = Label(root, font=('DengXian', 15, 'bold'))
  51. clock.grid(row=0, column=1)
  52. tick()
  53.  
  54. #开机时间
  55. nboot = Label(root, text="开机时间", font=('DengXian', 15, 'bold'), relief=GROOVE)
  56. nboot.grid(row=1, column=0)
  57. boottime = datetime.fromtimestamp(psutil.boot_time())
  58. boottime = boottime.strftime('%H:%M:%S')
  59. boot = Label(root, text=boottime, font=('DengXian', 15, 'bold'))
  60. boot.grid(row=1, column=1)
  61.  
  62. #运行时长
  63. nrun = Label(root, text="运行时长", font=('DengXian', 15, 'bold'), relief=GROOVE)
  64. nrun.grid(row=2, column=0)
  65. dTime1 = ''
  66. runn = Label(root, font=('DengXian', 15, 'bold'))
  67. runn.grid(row=2, column=1)
  68. timer()
  69.  
  70. #运行状态
  71. status = Label(root, text=" [ Running ] ", fg = 'green', bg = 'black', font=('DengXian', 10, 'bold'))
  72. status.grid(row=10, column=0)
  73. count = 0
  74. tips = Label(root, fg = 'green', bg = 'black', font=('DengXian', 10, 'bold'))
  75. tips.grid(row=10, column=1)
  76. msg()
  77.  
  78. root.mainloop()
效果

Python 入门学习(壹)上机时间提醒的更多相关文章

  1. python入门学习:9.文件和异常

    python入门学习:9.文件和异常 关键点:文件.异常 9.1 从文件中读取数据9.2 写入文件9.3 异常9.4 存储数据 9.1 从文件中读取数据 9.1.1 读取整个文件  首先创建一个pi_ ...

  2. python入门学习:8.类

    python入门学习:8.类 关键点:类 8.1 创建和使用类8.2 使用类和实例8.3 继承8.4 导入类 8.1 创建和使用类   面向对象编程是最有效的软件编写方法之一.在面向对象编程中,你编写 ...

  3. python入门学习:7.函数

    python入门学习:7.函数 关键点:函数 7.1 定义函数7.2 传递实参7.3 返回值7.4 传递列表7.5 传递任意数量的实参7.6 将函数存储在模块中 7.1 定义函数   使用关键字def ...

  4. python入门学习:6.用户输入和while循环

    python入门学习:6.用户输入和while循环 关键点:输入.while循环 6.1 函数input()工作原理6.2 while循环简介6.3 使用while循环处理字典和列表 6.1 函数in ...

  5. python入门学习:5.字典

    python入门学习:5.字典 关键点:字典 5.1 使用字典5.2 遍历字典5.3 嵌套 5.1 使用字典   在python中字典是一系列键-值对.每个键都和一个值关联,你可以使用键来访问与之相关 ...

  6. python入门学习:4.if语句

    python入门学习:4.if语句 关键点:判断 4.1 一个简单的测试4.2 条件测试4.3 if语句 4.1 一个简单的测试   if语句基本格式如下,注意不要漏了冒号 1if 条件 :2     ...

  7. python入门学习:3.操作列表

    python入门学习:3.操作列表 关键点:列表 3.1 遍历整个列表3.2 创建数值列表3.3 使用列表3.4 元组 3.1 遍历整个列表   循环这种概念很重要,因为它是计算机自动完成重复工作的常 ...

  8. python入门学习:2.列表简介

    python入门学习:2.列表简介 关键点:列表 2.1 列表是什么2.2 修改.添加和删除元素2.3 组织列表 2.1 列表是什么   列表,是由一系列按特定顺序排列的元素组成.你可以创建包含字母表 ...

  9. Python入门学习:1.变量和简单的数据类型

    python入门学习:1.变量和简单的数据类型 关键点:变量.字符串.数字 1.1 变量的命名和使用1.2 字符串1.3 数字1.4 注释 1.1 变量的命名和使用   变量,顾名思义是一个可变的量, ...

  10. Python入门学习之路,怎么 “开心,高效,踏实” 地把Python学好?兴趣,兴趣,兴趣!

    Python入门学习之路,怎么 “开心,高效,踏实” 地把Python学好?兴趣,兴趣,兴趣!找到你自己感兴趣的点进行切入,并找到兴趣点进行自我驱动是最好的学习方式!       推荐两本书,一本作为 ...

随机推荐

  1. win7下解压安装mysql的方法

    在win7下通过解压安装mysql 5.7一直出现启动不成功,网上找了好久终于找到一个解决方法,记录一下: 1.解压下载的压缩包 2.在解压目录下,将my-default.ini改名为my.ini, ...

  2. Linux:提示符PS1个性设置

    提示符PS1个性设置 1)默认PS1 echo $PS1 2)个性PS1 #去掉了默认显示的[]号#\e[1;34m\]\u:user名高亮显示并显示颜色#\e[5;33m\]\h:hostname主 ...

  3. c++的c风格字符串函数的实现

    要注意使用断言判断传入的字符串非空. #include <cassert> //求字符串长度 size_t StrLen(const char *str) { assert(str != ...

  4. 工作中比较重要的经验分享-2016-bypkm

    工作中总有一些经验能让人记忆深刻,能让人终生受用,相比技术而言,经验是宝贵的.无价的.在我的博客中,主要是技术类的博文,那些东西是相对死板的,价值也相对低廉.今天就记录一下我在工作中一次比较重要的经验 ...

  5. Winform开发之DataGridView的增删改

    DataGridView是一个非常强大的控件,用法很多.这里介绍一个简单的增删改例子. 贴效果图 右侧输入学生信息点击新增,将数据增加到数据库,并且加载到datagridview中,点击选择某条数据修 ...

  6. Swapping eth0 and eth1 on OK335xS board

    /******************************************************************************* * Swapping eth0 and ...

  7. spring-security-4 (1)介绍

    一.什么是spring security? spring security是基于spring开发的为JavaEE企业级应用提供安全服务的框架.安全服务主要是指 认证(Authentication)和  ...

  8. LG5024 保卫王国

    题意 题目描述 Z 国有\(n\)座城市,\(n - 1\)条双向道路,每条双向道路连接两座城市,且任意两座城市 都能通过若干条道路相互到达. Z 国的国防部长小 Z 要在城市中驻扎军队.驻扎军队需要 ...

  9. A-B Problem nyoj

    A-B Problem 时间限制:1000 ms  |  内存限制:65535 KB 难度:3   描述 A+B问题早已经被大家所熟知了,是不是很无聊呢?现在大家来做一下A-B吧. 现在有两个实数A和 ...

  10. FreeFileSync 4.2 发布,文件夹比较和同步工具

    FreeFileSync 是一款开源的文件夹比较和同步工具,可用于 Win 和 Lin 平台,最近发布了 4.2 版本. FreeFileSync 采用双面板设计,使用方法很简单: 在左面版和右面版上 ...