python日历程序编写_Python创建日历实例
本文讲述了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()
感兴趣的朋友可以调试运行一下本文实例,并根据自身需求对代码加以改进和完善。
python日历程序编写_Python创建日历实例相关推荐
- python生成日历_Python创建日历实例代码
Python创建日历的方法 以下代码不使用Python提供的calendar实现. 此程序在windows下测试通过,由于python字符编码直接输出给操作系统,so win下以gbk ansi为准, ...
- 怎么在HTML中加个日历,在HTML中创建日历
我目前在HTML中创建一个日历作为学校项目的一部分.在HTML中创建日历 到目前为止,我已经创建了页面的基础知识.我想要的是一个日历,您可以创建约会,然后显示(如基本日历). 这里是我到目前为止做出( ...
- python实现动态壁纸_Python实现日历壁纸动态标记
迁自QQ空间 2014-08-08 背景 可能这个标题不够明确到底要实现什么功能,下面详细介绍一下.由于windows系统任务栏的日期只有年.月.日,对于我来说,偶尔想看看农历,所以每次都要去问度娘. ...
- python关机程序代码_python实现的重启关机程序实例
本文实例讲述了Python实现的重启关机程序的方法,对Python程序设计有一定的参考价值.具体方法如下: 实例代码如下: #!/usr/bin/python #coding=utf-8 import ...
- python壁纸程序代码_python实现壁纸批量下载代码实例
前言 好久没有写文章了,因为最近都在适应新的岗位,以及利用闲暇时间学习python.这篇文章是最近的一个python学习阶段性总结,开发了一个爬虫批量下载某壁纸网站的高清壁纸. 注意:本文所属项目仅用 ...
- 用python制作微信机器人程序编写_Python制作微信聊天机器人
可以借助图灵机器人和itchat插件来模拟机器人聊天. 1.注册图灵机器人账号 在官网注册(http://www.tuling123.com),注册完之后可以创建一个机器人,最终需要机器人的apike ...
- 建立通讯录python增删改查_python 字典使用实例:创建通信录并完成修改、查找操作...
练习目的:巩固python 字典的创建,合并,修改及使用. 学了python字典后,同学们想创建一个自己的通信录,小明是这么做的: 先根据三位舍友的联系方式创建一个字典dicTXL 然后将隔壁舍长已创 ...
- 杨辉三角python语言程序思路_python杨辉三角方法的实例介绍
程序输出需要实现如下效果:[1] [1,1] [1,2,1] [1,3,3,1] ...... 方法:迭代,生成器def triangles() L = [1] while True: yiled L ...
- python流程控制编写_Python 流程控制
### if 语句 也许最著名的语句是 if 语句了. 例如: ```python >>> x = int(input("Please enter an integer: ...
- python五子棋程序教程_python实现五子棋小程序
本文实例为大家分享了python实现五子棋小程序的具体代码,供大家参考,具体内容如下 一.结合书上例子,分三段编写: wuziqi.py #coding:utf-8 from win_notwin i ...
最新文章
- 未将对象引用设置到对象的实例--可能出现的问题总结
- 3d button - where is OS type and version detected
- 有关软件工程的问题的分析和讨论及课后的作业3
- Linux的实际操作:文件目录类的实用指令(init运行级别和找回root密码)
- 数据湖正在成为新的数据仓库
- 计算机等级考试绝对应用,96年4月至210年全国计算机等级考试绝对全收集.docx
- 03-JavaScript基础-数据及数据类型
- 如何去除chrome最常访问的网页
- spark+dataframe+小汽车摇号倍率与中签率分析
- 2014年优秀动画片推荐:马来西亚动画片《Ribbit》
- ios苹果签名多少钱?苹果企业签名是最便宜的吗
- VS2013打包Windows程序部署教程
- h5应用数据加密_H5+应用打包JS没有加密混淆
- 了解OLE及ActiveX
- stream().map
- SOLO: Segmenting Objects by Locations
- 几种常见的网络摄像头_DVR方案_整理
- 【微信小程序】微信小程序实现在线音频播放
- 易语言外部数据库MySQL支持库Access数据库Sqlite数据应用
- 为什么要开发HDMI4K视频采集卡芯片方案