python生成日历_Python创建日历实例代码
Python创建日历的方法
以下代码不使用Python提供的calendar实现。
此程序在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创建数组
1 创建数组 array函数 >>> a=([1,2],[3,4])>>>array(a) array([[1, 2], [3, 4]]) arange函数:指定 ...
- python实现日历功能_使用python生成markdown格式的日历
文章目录 作用: 使用python生成日报中的日历 参考: 代码:# coding=utf-8 def is_leap_year(year): # 判断是否为闰年 if year % 4 == 0 a ...
- 使用Vue动态生成form表单的实例代码
具有数据收集.校验和提交功能的表单生成器,包含复选框.单选框.输入框.下拉选择框等元素以及,省市区三级联动,时间选择,日期选择,颜色选择,文件/图片上传功能,支持事件扩展. 欢迎大家star学习交流: ...
- 用python写搜索引擎_用python做一个搜索引擎(Pylucene)的实例代码
1.什么是搜索引擎? 搜索引擎是"对网络信息资源进行搜集整理并提供信息查询服务的系统,包括信息搜集.信息整理和用户查询三部分".如图1是搜索引擎的一般结构,信息搜集模块从网络采集信 ...
- 在哪里能收到python实例代码-用python做一个搜索引擎(Pylucene)的实例代码
1.什么是搜索引擎? 搜索引擎是"对网络信息资源进行搜集整理并提供信息查询服务的系统,包括信息搜集.信息整理和用户查询三部分".如图1是搜索引擎的一般结构,信息搜集模块从网络采集信 ...
- python读取txt文件代码-python批量处理txt文件的实例代码
通过python对多个txt文件进行处理 读取路径,读取文件 获取文件名,路径名 对响应的文件夹名字进行排序 对txt文件内部的数据相应的某一列/某一行进行均值处理 写入到事先准备好的Excel文件中 ...
- oracle存储过程生成单号,Oracle生成单据编号存储过程的实例代码
Oracle生成单据编号存储过程,在做订单类似的系统都可能会存在订单编号不重复,或是流水号按日,按年,按月进行重新编号. 可以参考以下存储过程 CREATE OR REPLACE procedure ...
- python写一个游戏多少代码-使用Python写一个贪吃蛇游戏实例代码
我在程序中加入了分数显示,三种特殊食物,将贪吃蛇的游戏逻辑写到了SnakeGame的类中,而不是在Snake类中. 特殊食物: 1.绿色:普通,吃了增加体型 2.红色:吃了减少体型 3.金色:吃了回到 ...
- python游戏脚本实例-使用Python写一个贪吃蛇游戏实例代码
我在程序中加入了分数显示,三种特殊食物,将贪吃蛇的游戏逻辑写到了SnakeGame的类中,而不是在Snake类中. 特殊食物: 1.绿色:普通,吃了增加体型 2.红色:吃了减少体型 3.金色:吃了回到 ...
最新文章
- linux常用的28个快捷键
- 四轴飞行器实践教程第1章什么是飞行器
- 将枚举值转换为DropDownList等的选项值
- mysql 服务器 管理_MySQL服务器组件
- Diango博客--10.交流的桥梁“评论功能”
- CycleGAN 各种变变变
- MTKP60 vs MSM 660
- post工具_GitHub CLI 命令行工具使用
- Java多线程学习三十六:主内存和工作内存的关系
- 家乡饮食文化PHP开题报告,挖掘家乡饮食文化拓展幼儿园课程
- Spring中的面向切面(AOP)
- 使用Scratch3和ROS进行机器人图形化编程学习
- c#实现文件转base64和base64转文件(文件为任意格式)
- pc端ui图片尺寸_PC网页设计尺寸规范
- coon.php连接,新手关于$coon的连接问题
- 阿里月饼事件被辞程序员冤吗
- 别让这个世界左右你的人生
- 几天几夜,终解移动MM计费SDK接入bug
- Java实现扑克牌游戏(简易炸金花)
- matlab中signal pulses,MATLAB信号处理仿真-基带脉冲成形的数字滤波器