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学好?兴趣,兴趣,兴趣!找到你自己感兴趣的点进行切入,并找到兴趣点进行自我驱动是最好的学习方式! 推荐两本书,一本作为 ...
随机推荐
- win7下解压安装mysql的方法
在win7下通过解压安装mysql 5.7一直出现启动不成功,网上找了好久终于找到一个解决方法,记录一下: 1.解压下载的压缩包 2.在解压目录下,将my-default.ini改名为my.ini, ...
- Linux:提示符PS1个性设置
提示符PS1个性设置 1)默认PS1 echo $PS1 2)个性PS1 #去掉了默认显示的[]号#\e[1;34m\]\u:user名高亮显示并显示颜色#\e[5;33m\]\h:hostname主 ...
- c++的c风格字符串函数的实现
要注意使用断言判断传入的字符串非空. #include <cassert> //求字符串长度 size_t StrLen(const char *str) { assert(str != ...
- 工作中比较重要的经验分享-2016-bypkm
工作中总有一些经验能让人记忆深刻,能让人终生受用,相比技术而言,经验是宝贵的.无价的.在我的博客中,主要是技术类的博文,那些东西是相对死板的,价值也相对低廉.今天就记录一下我在工作中一次比较重要的经验 ...
- Winform开发之DataGridView的增删改
DataGridView是一个非常强大的控件,用法很多.这里介绍一个简单的增删改例子. 贴效果图 右侧输入学生信息点击新增,将数据增加到数据库,并且加载到datagridview中,点击选择某条数据修 ...
- Swapping eth0 and eth1 on OK335xS board
/******************************************************************************* * Swapping eth0 and ...
- spring-security-4 (1)介绍
一.什么是spring security? spring security是基于spring开发的为JavaEE企业级应用提供安全服务的框架.安全服务主要是指 认证(Authentication)和 ...
- LG5024 保卫王国
题意 题目描述 Z 国有\(n\)座城市,\(n - 1\)条双向道路,每条双向道路连接两座城市,且任意两座城市 都能通过若干条道路相互到达. Z 国的国防部长小 Z 要在城市中驻扎军队.驻扎军队需要 ...
- A-B Problem nyoj
A-B Problem 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 A+B问题早已经被大家所熟知了,是不是很无聊呢?现在大家来做一下A-B吧. 现在有两个实数A和 ...
- FreeFileSync 4.2 发布,文件夹比较和同步工具
FreeFileSync 是一款开源的文件夹比较和同步工具,可用于 Win 和 Lin 平台,最近发布了 4.2 版本. FreeFileSync 采用双面板设计,使用方法很简单: 在左面版和右面版上 ...