python项目源码 日程管理_[Python] Python日程处理
日程处理
目标是输入个文本文件关于日程的,就能够到时间的时候显示出来,在ubuntu系统上运行。
包括以下几点:
1.了解Tkinter。
1.1 参考文献自己制作Python IDEL
1.1.1 制作最简单的文本框和输出。
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import Tkinter as tk
#导入Tkinter模块
#创建一个类
class Application(tk.Frame):
#__init__初始化函数,包含了pack即填充方式。
def __init__(self, master=None):
tk.Frame.__init__(self, master)
self.pack()
#调用createWidgets()方法
self.createWidgets()
def createWidgets(self):
#定义部件1 hi_there模块,设置为button
self.hi_there = tk.Button(self)
self.hi_there["text"] = "Hello World\n(click me)"
self.hi_there["command"] = self.say_hi
self.hi_there.pack(side="top")
#定义部件2 QUIT模块,设置为button
self.QUIT = tk.Button(self, text="QUIT", fg="red",
command=root.destroy)
self.QUIT.pack(side="bottom")
def say_hi(self):
print("hi there, everyone!")
#获取tk实例
root = tk.Tk()
#构造类
app = Application(master=root)
#开始实例化
app.mainloop()
1.1.2 上面的pack是定义填充方式,widget.pack( pack_options ),其中
expand: 当设置为true,部件扩展填充,否则不能使用任何部件的母空间.
fill: 确定是否部件填补分配任何额外的空间,或保持其自己的最小尺寸:无(默认)和X(只填写水平)Y(只填写垂直),或两者兼而有之(填充横向和纵向).
side: 决定哪方父widget包对TOP(默认),下,左,或右.
1.1.3 注意在python2.7中lambda表达式不能直接使用print函数,需要先自定义一个函数然后调用
1.1.4 引入tkFiledialog的时候可以参考文献tkFiledialog引入
from tkFileDialog import *
2.功能模块
2.1 读写CSV文件。
参考CSV操作来写信息到文件中。
2.2 需要定义类方便读写这个CSV文件。
参考类定义,因为需要写入sequence对象,所以在这个类中需要定义类似如下结构:
class stepF:
mID = 0
mTimeStamp = datetime(1990,5,11,8,8,8)
mDuration = 0
mParentTask = 0
mSubTask = 1
mPriority = 0
mItem = "GT,xy"
def getSeq(self):
return [self.mID,self.mTimeStamp,self.mDuration,self.mParentTask,
self.mSubTask,self.mPriority,self.mItem]
最后写CSV如下,定义了那个getSeq函数用来在写入的时候调用:
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
import csv
from datetime import *
'''csv文件操作'''
csvfile = file('ss.txt','w')
writer = csv.writer(csvfile)
writer.writerow(['ID','TimeStamp','Duration','ParentTask'
,'SubTask','Priority','Item'])
data = []
class stepF:
mID = 0
mTimeStamp = datetime(1990,5,11,8,8,8)
mDuration = 0
mParentTask = 0
mSubTask = 1
mPriority = 0
mItem = "GT,xy"
def getSeq(self):
return [self.mID,self.mTimeStamp,self.mDuration,self.mParentTask,
self.mSubTask,self.mPriority,self.mItem]
s1 = stepF()
s1.ID=1
s2 = stepF()
data.append(s1.getSeq())
data.append(s2.getSeq())
writer.writerows(data)
csvfile.close()
读CSV格式的实例如下,这个init函数是用来在读入的时候构建实例:
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
import csv
from datetime import *
class stepF:
mID = 0
mTimeStamp = datetime(1990,5,11,8,8,8)
mDuration = 0
mParentTask = 0
mSubTask = 1
mPriority = 0
mItem = "GT,xy"
def __init__(self,all):
self.mID,self.mTimeStamp,self.mDuration,self.mParentTask,self.mSubTask,self.mPriority,self.mItem=all
def getSeq(self):
return [self.mID,self.mTimeStamp,self.mDuration,self.mParentTask,
self.mSubTask,self.mPriority,self.mItem]
csvfile = file('ss.txt','r')
reader = csv.reader(csvfile)
n = 0
data = []
for line in reader:
if n ==0:
n=1
continue
s = stepF(line)
print(s.mItem)
data.append(s)
csvfile.close()
print(data[1].mTimeStamp)
2.3 根据时间对ID排序。可以采用冒泡排序法,如下:
def sortSteps(data):
for i in range(len(data)):
for j in range(len(data)-1,i,-1):
if data[j].mTimeStamp < data[j-1].mTimeStamp:
temp = data[j]
data[j] = data[j-1]
data[j-1]=temp
2.4 线程模块如下,主要是实现了多个task并行执行
def delayrun(delayTime, delayMessage):
root = Tk()
root.title("remind")
root.geometry('500x600')
root.resizable(width=False,height=True)
s = delayMessage
l = Label(root, text=s, bg="green", font=("Arial",24),width=200, height=600)
time.sleep(delayTime)
l.pack()
root.mainloop()
class tkThread(threading.Thread):
def __init__(self, delayTime,delayMessage):
threading.Thread.__init__(self)
self.delayTime =delayTime
self.delayMessage =delayMessage
def run(self):
delayrun(self.delayTime,self.delayMessage)
3.最后把各个模块组合起来实现了读入csv文件并定时显示事件,需要注意的是csv第一行是标题不能占用。ss.txt格式如下:
ID,TimeStamp,Duration,ParentTask,SubTask,Priority,Item
0,2016-06-13 22:00:08,0,0,1,0,"详细规划"
3.1 全部代码如下:
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
import csv
from datetime import *
from Tkinter import *
import threading
import time
'''定义这个变量用来方便写入读出csv文件'''
class stepF:
mID = 0
mTimeStamp = datetime(1990,5,11,8,8,8)
mDuration = 0
mParentTask = 0
mRepeated = 1
mPriority = 0
mItem = "GT,xy"
def __init__(self,all):
self.mID,self.mTimeStamp,self.mDuration,self.mParentTask,self.mRepeated,self.mPriority,self.mItem=all
def getSeq(self):
return [self.mID,self.mTimeStamp,self.mDuration,self.mParentTask,
self.mRepeated,self.mPriority,self.mItem]
'''对事件变量进行排序,主要是针对时间点来排序'''
def sortSteps(data):
for i in range(len(data)):
for j in range(len(data)-1,i,-1):
if data[j].mTimeStamp < data[j-1].mTimeStamp:
temp = data[j]
data[j] = data[j-1]
data[j-1]=temp
'''输出到文件中去'''
def outputData(data):
csvfile = file('ss.txt','w')
writer = csv.writer(csvfile)
writer.writerow(['ID','TimeStamp','Duration','ParentTask'
,'SubTask','Priority','Item'])
for i in range(len(data)):
data[i].mID = i
writer.writerow(data[i].getSeq())
csvfile.close()
''' 读入数据'''
def inputData(data):
csvfile = file('ss.txt','r')
reader = csv.reader(csvfile)
n = 0
for line in reader:
if n ==0:
n=1
continue
s = stepF(line)
data.append(s)
csvfile.close()
''' 在屏幕上显示提示信息'''
def delayrun(delayTime, delayMessage):
root = Tk()
root.title("remind")
root.geometry('500x600')
root.resizable(width=False,height=True)
s = delayMessage
l = Label(root, text=s, bg="green", font=("Arial",24),width=200, height=600)
time.sleep(delayTime)
l.pack()
root.mainloop()
''' thread用来显示多个事件'''
class tkThread(threading.Thread):
def __init__(self, delayTime,delayMessage):
threading.Thread.__init__(self)
self.delayTime =delayTime
self.delayMessage =delayMessage
def run(self):
delayrun(self.delayTime,self.delayMessage)
''' 用来存储读入的事件'''
data = []
inputData(data)
sortSteps(data)
''' 运行多个线程,当时间到了以后显示tk信息'''
for i in range(len(data)):
dt = datetime.today()
nt = datetime.strptime(data[i].mTimeStamp,"%Y-%m-%d %H:%M:%S")
if dt> nt:
continue
print(str(i))
print(str((nt-dt).total_seconds()))
print(data[i].mItem)
t=tkThread((nt-dt).total_seconds(),data[i].mItem)
t.start()
print("wait or not")
'''outputData(data)'''
python项目源码 日程管理_[Python] Python日程处理相关推荐
- python3源码剖析新版_《Python 3 源码剖析》
介绍 本项目致力于对 Python 3.7 的源码分析,深度参考陈儒大大的<Python 源码剖析>,编写 Python 3 的版本. 希望各位 Python 爱好者能参与其中,一起探索 ...
- python项目源码 日程管理软件_分享:一个开源的基于时间管理四象限的待办管理工具...
在完成这篇文章里要分享的一个开源小工具 todolist 之前,在网上找了不少日程管理,待办管理的小工具:开源的.收费的.有广告.需要注册的那也是不少: 根据自己平时的工作习惯:以及对时间管理的学习理 ...
- python项目源码 日程管理_基于fullcalendar制作的日程管理小demo
一.项目地址: 二.项目功能概述: 该项目是基于fullcalendar而制作的日程管理,fullcalendar是一个基于jquery的日历插件,在该项目中,我们可以在日历上编辑我们的日程,并将日程 ...
- python项目源码 日程管理_JS日程管理插件FullCalendar简单实例
在线演示 源码下载 HTML 首先第一步就是在需要调用FullCalendar日程插件的页面中载入必要的javascript和css文件,包括jQuery库文件,FullCa ...
- python项目源代码-python项目源码
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! pip install tencentcloud-sdk-python 注意:如 ...
- 一个完整的python项目源码-一个Python开源项目-腾讯哈勃沙箱源码剖析(上)
前言 2019年来了,2020年还会远吗? 请把下一年的年终奖发一下,谢谢... 回顾逝去的2018年,最大的改变是从一名学生变成了一位工作者,不敢说自己多么的职业化,但是正在努力往那个方向走. 以前 ...
- 一个完整的python项目源码-一个Python开源项目-哈勃沙箱源码剖析(下)
前言 在上一篇中,我们讲解了哈勃沙箱的技术点,详细分析了静态检测和动态检测的流程.本篇接着对动态检测的关键技术点进行分析,包括strace,sysdig,volatility.volatility的介 ...
- python程序源码百行_百行python代码,轻松完成贪吃蛇小游戏
引言 作为python 小白,总是觉得自己要做好百分之二百的准备,才能开始写程序.以至于常常整天在那看各种语法教程,学了几个月还是只会print('hello world'). 这样做效率太低,正确的 ...
- python优秀源码新闻系统_[内附完整源码和文档] 基于python的新闻检索系统
1 系统介绍 1.1 系统需求 新闻检索系统:定向采集不少于 4 个中文社会新闻网站或频道,实现这些网站新闻信息及评论信息的自动爬取.抽取.索引和检索.本项目未使用 lucene,Goose 等成熟开 ...
最新文章
- 金额阿拉伯数字转换为中文大写
- MYSQL体系结构-来自期刊
- 使用谷歌jquery库文件的理由
- 一文详解NDT算法实现
- 编程之美2.16 最长递增子序列
- Spring应用的单元测试
- Owasp live CD 2011下载地址
- java的接口怎么理解_如何理解Java 中的接口
- 初尝微信小程序2-基本框架
- 通过html备份数据库文件,备份网站文件和数据库
- 可行后继路由,可行条件和报告距离
- VS2010:外部依赖目录错误,怎么办
- mysql version 50713_MySQL 5.6 升级为 MySQL 5.7
- sqlite转sql2000数据库
- 谁要的手机用KRKR2 Onscripter 资源打包工具
- android 自动更换壁纸,安卓壁纸如何设置自动更换壁纸-手机天堂
- 大数据精准投放平台_基于大数据的广告精准投放方法与流程
- IPAPatch: 免越狱调试、修改第三方App
- 稀疏表示和字典学习的简单理解
- 基于密钥的ssh远程登录