Python 入门学习(壹)上机时间提醒
- 基于 Udacity 的 Python 入门课程 Programming Foundations with Python
- 基于 Python 2.7
控制台版本
思路
Project 1 是一个时间提醒助手,从打开程序开始计时,每两个小时打开一个 Youtube 上的视频链接。我想也许能够做一个更完善的版本——以开机时间为原点,计算上机的时长,每两个小时弹出一个 MessageBox 提示休息。
代码
import time
import os
from datetime import datetime
import psutil
import sys
from time import sleep
import Tkinter as tk
import tkMessageBox count = 0
while 1:
os.system('cls') #清屏实现动态显示
bTime = datetime.fromtimestamp(psutil.boot_time()) #获取开机时间
print "Boot Time:", #不换行输出
print bTime
cTime = datetime.now() #获取当前时间
print "Current Time:",
print cTime
dTime = (cTime - bTime) #计算用机时长
print "Running Seconds:",
print dTime.seconds,
print "s"
time = int(dTime.seconds)
if (time/7200 > count):
tkMessageBox.showinfo(title = 'Notice', message = 'You Should Have a Rest') #弹出提示框
count+=1
sleep(1) if __name__=="__main__":
main()
效果


GUI 版本
思路
既然都用上了 Tkinter,何不直接来一个 GUI 界面呢。不过如果是 Tkinter 的话,代码就需要完全重构了。
代码
#coding=utf-8
import os
from datetime import datetime
import psutil
import sys
from time import sleep
from Tkinter import *
import tkMessageBox
import time def tick():
global time1
# 获取当前系统时间
time2 = time.strftime('%H:%M:%S')
# 动态显示
if time2 != time1:
time1 = time2
clock.config(text=time2)
clock.after(200, tick) def timer():
global dTime1
bTime = datetime.fromtimestamp(psutil.boot_time())
cTime = datetime.now()
dTime2 = (cTime - bTime).seconds
if dTime2 != dTime1:
dTime1 = dTime2
runn.config(text=str(dTime2)+' s')
runn.after(800, timer) def msg():
global count
if (dTime1/7200 > count):
tkMessageBox.showinfo(title = 'Notice', message = 'You Should Have a Rest Now')
count+=1
tips.config(text="累计提示次数:"+str(count))
tips.after(800, msg) root = Tk() #标题栏
root.title('Tik')
#窗体尺寸
#root.geometry('200x100') #时钟
nclock = Label(root, text="当前时间", font=('DengXian', 15, 'bold'), relief=GROOVE)
nclock.grid(row=0, column=0)
time1 = ''
clock = Label(root, font=('DengXian', 15, 'bold'))
clock.grid(row=0, column=1)
tick() #开机时间
nboot = Label(root, text="开机时间", font=('DengXian', 15, 'bold'), relief=GROOVE)
nboot.grid(row=1, column=0)
boottime = datetime.fromtimestamp(psutil.boot_time())
boottime = boottime.strftime('%H:%M:%S')
boot = Label(root, text=boottime, font=('DengXian', 15, 'bold'))
boot.grid(row=1, column=1) #运行时长
nrun = Label(root, text="运行时长", font=('DengXian', 15, 'bold'), relief=GROOVE)
nrun.grid(row=2, column=0)
dTime1 = ''
runn = Label(root, font=('DengXian', 15, 'bold'))
runn.grid(row=2, column=1)
timer() #运行状态
status = Label(root, text=" [ Running ] ", fg = 'green', bg = 'black', font=('DengXian', 10, 'bold'))
status.grid(row=10, column=0)
count = 0
tips = Label(root, fg = 'green', bg = 'black', font=('DengXian', 10, 'bold'))
tips.grid(row=10, column=1)
msg() root.mainloop()
效果

Python 入门学习(壹)上机时间提醒的更多相关文章
- python入门学习:9.文件和异常
python入门学习:9.文件和异常 关键点:文件.异常 9.1 从文件中读取数据9.2 写入文件9.3 异常9.4 存储数据 9.1 从文件中读取数据 9.1.1 读取整个文件 首先创建一个pi_ ...
- python入门学习:8.类
python入门学习:8.类 关键点:类 8.1 创建和使用类8.2 使用类和实例8.3 继承8.4 导入类 8.1 创建和使用类 面向对象编程是最有效的软件编写方法之一.在面向对象编程中,你编写 ...
- python入门学习:7.函数
python入门学习:7.函数 关键点:函数 7.1 定义函数7.2 传递实参7.3 返回值7.4 传递列表7.5 传递任意数量的实参7.6 将函数存储在模块中 7.1 定义函数 使用关键字def ...
- python入门学习:6.用户输入和while循环
python入门学习:6.用户输入和while循环 关键点:输入.while循环 6.1 函数input()工作原理6.2 while循环简介6.3 使用while循环处理字典和列表 6.1 函数in ...
- python入门学习:5.字典
python入门学习:5.字典 关键点:字典 5.1 使用字典5.2 遍历字典5.3 嵌套 5.1 使用字典 在python中字典是一系列键-值对.每个键都和一个值关联,你可以使用键来访问与之相关 ...
- python入门学习:4.if语句
python入门学习:4.if语句 关键点:判断 4.1 一个简单的测试4.2 条件测试4.3 if语句 4.1 一个简单的测试 if语句基本格式如下,注意不要漏了冒号 1if 条件 :2 ...
- python入门学习:3.操作列表
python入门学习:3.操作列表 关键点:列表 3.1 遍历整个列表3.2 创建数值列表3.3 使用列表3.4 元组 3.1 遍历整个列表 循环这种概念很重要,因为它是计算机自动完成重复工作的常 ...
- python入门学习:2.列表简介
python入门学习:2.列表简介 关键点:列表 2.1 列表是什么2.2 修改.添加和删除元素2.3 组织列表 2.1 列表是什么 列表,是由一系列按特定顺序排列的元素组成.你可以创建包含字母表 ...
- Python入门学习:1.变量和简单的数据类型
python入门学习:1.变量和简单的数据类型 关键点:变量.字符串.数字 1.1 变量的命名和使用1.2 字符串1.3 数字1.4 注释 1.1 变量的命名和使用 变量,顾名思义是一个可变的量, ...
- Python入门学习之路,怎么 “开心,高效,踏实” 地把Python学好?兴趣,兴趣,兴趣!
Python入门学习之路,怎么 “开心,高效,踏实” 地把Python学好?兴趣,兴趣,兴趣!找到你自己感兴趣的点进行切入,并找到兴趣点进行自我驱动是最好的学习方式! 推荐两本书,一本作为 ...
随机推荐
- Alpha阶段敏捷冲刺---Day1
一.Daily Scrum Meeting照片 二.今天冲刺情况反馈 1.昨天已完成的工作 昨天我们组全体成员在五社区五号楼719召开了紧急会议,在会议上我们梳理了编写这个程序的所有流程,并且根 ...
- PHP ksort() 函数
PHP ksort() 函数 PHP Array 函数 实例 按照键名对关联数组进行升序排序: <?php $age=array("Bill"=>"60&qu ...
- ASP.NET CORE网站部署到 windows server 的IIS 上去
章基于我自己经验的一个总结,在windows服务器上部署asp.net core网站.环境是 windows server 2012数据中心版本 第一步先安装 IIS 服务器 接下来就是一路下一步,然 ...
- ionic2中跨页面回传值
1.在跳转到新页面时传入一个contactsCallback的参数,在该参数的函数定义中做出一个承诺. 注意:最开始我本来是采用如下图方式的,但是很不幸,出现了问题,问题所在就是关于这个this的作用 ...
- Swift自定义头视图和尾视图
var data: [[String]]! override func viewDidLoad() { super.viewDidLoad() // Do any additional setup a ...
- 多目标跟踪baseline methods
参考文献: MOTChallenge 2015: Towards a Benchmark for Multi-Target TrackingLaura Leal-Taix ´e, Anton Mila ...
- python安装openSSL
首先确定您是否下载python (3).pip (3).python-wheel 官网下载源码包openSSL 参考:用pip安装python 模块OpenSSL
- 火狐浏览器调试ajax异步页面时报错NS_ERROR_UNEXPECTER
第一个直观的结论就是ajax调用出错,如果其他浏览器却调用没报错,而且正常返回值了,那么就是Firefox浏览器的问题了: 如果其他浏览器也没余完全正常执行,而是出现和我上一篇ajax向后台请求数据, ...
- BZOJ5125: [Lydsy1712月赛]小Q的书架【决策单调性优化DP】【BIT】【莫队】【分治】
小Q有n本书,每本书有一个独一无二的编号,现在它们正零乱地在地上排成了一排. 小Q希望把这一排书分成恰好k段,使得每段至少有一本书,然后把每段按照现在的顺序依次放到k层书架的每一层上去.将所有书都放到 ...
- 编写 Target 检测 MSBuild / dotnet build 此次编译是否是差量编译
MSBuild 或 Roslyn 编译项目时均支持差量编译,毕竟为了性能.我在 每次都要重新编译?太慢!让跨平台的 MSBuild/dotnet build 的 Target 支持差量编译 一文中介绍 ...