最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
当前位置: 首页 - 科技 - 知识百科 - 正文

Python创建日历实例

来源:懂视网 责编:小采 时间:2020-11-27 14:30:53
文档

Python创建日历实例

Python创建日历实例:本文讲述了Python创建日历的方法,与以往不同的是,本文实例不使用Python提供的calendar实现,相信对大家的Python程序设计有一定的借鉴价值。 此程序在windows下测试通过,由于python字符编码直接输出给操作系统,so win下以gbk ansi为准,li
推荐度:
导读Python创建日历实例:本文讲述了Python创建日历的方法,与以往不同的是,本文实例不使用Python提供的calendar实现,相信对大家的Python程序设计有一定的借鉴价值。 此程序在windows下测试通过,由于python字符编码直接输出给操作系统,so win下以gbk ansi为准,li

本文讲述了Python创建日历的方法,与以往不同的是,本文实例不使用Python提供的calendar实现,相信对大家的Python程序设计有一定的借鉴价值。

此程序在windows下测试通过,由于python字符编码直接输出给操作系统,so win下以gbk ansi为准,linux下大概以utf-8为准(未测试)

#coding=gbk
# -*- coding: cp936 -*-
# 制作一个日历(只显示阳历日期)
'''实现方法:不使用python提供的calendar,根据给出的日期计算:
1.先根据输入年份得到这一年的第一天是星期几((year + (year - 1)/4 - (year - 1)/100 + (year -1)/400)% 7)
2.再依据输入的日期(只需要年月就可以了)得到这个日期得到在当前年份的第几天
3.根据1和2得到当前月份的第一天是星期几。
4.创建日历,其实就是在5x7的表格中预先放置5*7个Label,分别表示1-31的情况(应该包含所有的情况)。
5.将1-31从得到的位置开始打印出来,以7为一行。
6.更新日历,当对日历头进行操作(改变日期时)就会更新日历显示的内容。
7.整个组件的布局是7x7的表格方式。第一行显示日历头,包括年月日的显示与选择;第二行为显示的日期,3-7为显示的月份信息。
'''

class Calendar:
 pass
AppCal = Calendar()
import time
def calcFirstDayOfMonth(year,month,day):
 '''计算某一日的是星期几'''
 months = (0,31,59,90,120,151,181,212,243,273,304,334)
 if 0 <= month <= 12:
 sum = months[month - 1]
 else:
 print 'data error'
 # 对年月做了判断,日只是加了上下限,没有根据月判断输入的是否合法
 if year < 0 or month < 0 or month > 11 or day < 0 or day >31:
 import os
 os._exit(1)
 
 sum += day
 leap = 0
 if (year % 400 == 0) or ((year % 4 == 0) and (year % 100 != 0)):
 leap = 1
 if (leap == 1) and (month > 2):
 sum += 1
 # 先计算某年的第一天是星期几
 # (year + (year - 1)/4 - (year - 1)/100 + (year -1)/400)% 7
 return (sum % 7 - 1 + (year + (year - 1)/4 - (year - 1)/100 + (year -1)/400))% 7
def createMonth(master):
 '''创建日历'''
 for i in range(5):
 for j in range(7):
 Label(master,text = '').grid(row = i + 2,column = j)
def updateDate():
 ''' 更新日历'''
 #得到当前选择的日期
 year = int(AppCal.vYear.get())
 month = int(AppCal.vMonth.get())
 day = int(AppCal.vDay.get())
 months = [31,28,31,30,31,30,31,31,30,31,30,31] 
 # 判断是否瑞年
 if (year % 400 == 0) or ((year % 4 == 0) and (year % 100 != 0)):
 months[1] += 1
 fd = calcFirstDayOfMonth(year,month,1)
 for i in range(5):
 for j in range(7):
 root.grid_slaves(i +2,j)[0]['text'] = ''

 for i in range(1,months[month - 1] + 1):
 root.grid_slaves((i + fd - 1)/7 + 2,(i + fd -1)%7)[0]['text'] = str(i)
 
def drawHeader(master):
 '''添加日历头'''
 # 得到当前的日期,设置为默认值
 now = time.localtime(time.time())
 col_idx = 0
 
 # 创建年份组件
 AppCal.vYear = StringVar()
 AppCal.vYear.set(now[0])
 Label(master,text = 'YEAR').grid(row = 0,column = col_idx);col_idx += 1
 omYear = apply(OptionMenu,(master,AppCal.vYear) + tuple(range(2005,2010)))
 omYear.grid(row = 0,column = col_idx);col_idx += 1

 # 创建月份组件
 AppCal.vMonth = StringVar()
 AppCal.vMonth.set(now[1])
 Label(master,text = 'Month').grid(row = 0,column = col_idx);col_idx += 1
 omMonth = apply(OptionMenu,(master,AppCal.vMonth) + tuple(range(1,12)))
 omMonth.grid(row = 0,column = col_idx);col_idx += 1

 # 创建年份组件
 AppCal.vDay = StringVar()
 AppCal.vDay.set(now[2])
 Label(master,text = 'DAY').grid(row = 0,column = col_idx);col_idx += 1
 omDay = apply(OptionMenu,(master,AppCal.vDay) + tuple(range(1,32)))
 omDay.grid(row = 0,column = col_idx);col_idx += 1

 # 创建更新按钮
 btUpdate = Button(master,text = 'Update',command = updateDate)
 btUpdate.grid(row = 0,column = col_idx);col_idx += 1

 # 打印星期标签
 weeks = ['Sun.','Mon.','Tues.','Wed.','Thurs.','Fri.','Sat.']
 for week in weeks:
 Label(master,text = week).grid(row = 1,column = weeks.index(week))
 
from Tkinter import *
root = Tk()

drawHeader(root)
createMonth(root)
updateDate()

root.mainloop()

感兴趣的朋友可以调试运行一下本文实例,并根据自身需求对代码加以改进和完善。

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文档

Python创建日历实例

Python创建日历实例:本文讲述了Python创建日历的方法,与以往不同的是,本文实例不使用Python提供的calendar实现,相信对大家的Python程序设计有一定的借鉴价值。 此程序在windows下测试通过,由于python字符编码直接输出给操作系统,so win下以gbk ansi为准,li
推荐度:
标签: 创建 生成 日历
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top