国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python創(chuàng)建日歷實例

2020-02-23 05:40:55
字體:
來源:轉載
供稿:網(wǎng)友

本文講述了Python創(chuàng)建日歷的方法,與以往不同的是,本文實例不使用Python提供的calendar實現(xiàn),相信對大家的Python程序設計有一定的借鑒價值。

此程序在windows下測試通過,由于python字符編碼直接輸出給操作系統(tǒng),so win下以gbk ansi為準,linux下大概以utf-8為準(未測試)

#coding=gbk# -*- coding: cp936 -*-# 制作一個日歷(只顯示陽歷日期)'''實現(xiàn)方法:不使用python提供的calendar,根據(jù)給出的日期計算:1.先根據(jù)輸入年份得到這一年的第一天是星期幾((year + (year - 1)/4 - (year - 1)/100 + (year -1)/400)% 7)2.再依據(jù)輸入的日期(只需要年月就可以了)得到這個日期得到在當前年份的第幾天3.根據(jù)1和2得到當前月份的第一天是星期幾。4.創(chuàng)建日歷,其實就是在5x7的表格中預先放置5*7個Label,分別表示1-31的情況(應該包含所有的情況)。5.將1-31從得到的位置開始打印出來,以7為一行。6.更新日歷,當對日歷頭進行操作(改變日期時)就會更新日歷顯示的內容。7.整個組件的布局是7x7的表格方式。第一行顯示日歷頭,包括年月日的顯示與選擇;第二行為顯示的日期,3-7為顯示的月份信息。'''class Calendar:  passAppCal = Calendar()import timedef 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'  # 對年月做了判斷,日只是加了上下限,沒有根據(jù)月判斷輸入的是否合法  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))% 7def createMonth(master):  '''創(chuàng)建日歷'''  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    # 創(chuàng)建年份組件  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  # 創(chuàng)建月份組件  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  # 創(chuàng)建年份組件  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  # 創(chuàng)建更新按鈕  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()            
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 勐海县| 巴林左旗| 天峨县| 修文县| 盐池县| 祁连县| 潍坊市| 普安县| 双桥区| 定西市| 刚察县| 马鞍山市| 姜堰市| 林周县| 平遥县| 韩城市| 茂名市| 莱芜市| 永平县| 墨竹工卡县| 曲阳县| 沐川县| 庆云县| 剑河县| 红原县| 南宁市| 亳州市| 隆化县| 鹤峰县| 广昌县| 花莲县| 资阳市| 新昌县| 从江县| 梅州市| 左贡县| 鲁山县| 崇明县| 香河县| 湄潭县| 武邑县|