欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

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

系統(tǒng) 1613 0

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

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

            
#coding=gbk
# -*- coding: cp936 -*-
# 制作一個(gè)日歷(只顯示陽歷日期)
'''實(shí)現(xiàn)方法:不使用python提供的calendar,根據(jù)給出的日期計(jì)算:
1.先根據(jù)輸入年份得到這一年的第一天是星期幾((year + (year - 1)/4 - (year - 1)/100 + (year -1)/400)% 7)
2.再依據(jù)輸入的日期(只需要年月就可以了)得到這個(gè)日期得到在當(dāng)前年份的第幾天
3.根據(jù)1和2得到當(dāng)前月份的第一天是星期幾。
4.創(chuàng)建日歷,其實(shí)就是在5x7的表格中預(yù)先放置5*7個(gè)Label,分別表示1-31的情況(應(yīng)該包含所有的情況)。
5.將1-31從得到的位置開始打印出來,以7為一行。
6.更新日歷,當(dāng)對(duì)日歷頭進(jìn)行操作(改變?nèi)掌跁r(shí))就會(huì)更新日歷顯示的內(nèi)容。
7.整個(gè)組件的布局是7x7的表格方式。第一行顯示日歷頭,包括年月日的顯示與選擇;第二行為顯示的日期,3-7為顯示的月份信息。
'''

class Calendar:
  pass
AppCal = Calendar()
import time
def calcFirstDayOfMonth(year,month,day):
  '''計(jì)算某一日的是星期幾'''
  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'
  # 對(duì)年月做了判斷,日只是加了上下限,沒有根據(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
  # 先計(jì)算某年的第一天是星期幾
  # (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):
  '''創(chuàng)建日歷'''
  for i in range(5):
    for j in range(7):
      Label(master,text = '').grid(row = i + 2,column = j)
def updateDate():
  ''' 更新日歷'''
  #得到當(dāng)前選擇的日期
  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):
  '''添加日歷頭'''
  # 得到當(dāng)前的日期,設(shè)置為默認(rèn)值
  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

  # 打印星期標(biāo)簽
  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()


          

感興趣的朋友可以調(diào)試運(yùn)行一下本文實(shí)例,并根據(jù)自身需求對(duì)代碼加以改進(jìn)和完善。


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 欧美一级二级三级视频 | 日韩精品一级毛片 | 亚洲国产综合精品中文第一区 | 99精品视频在线观看免费专区 | 国产在线精品一区二区高清不卡 | 久久院线 | 99精品视频在线观看免费专区 | 99精品久久秒播无毒不卡 | 欧美18 19sex性处video | 日韩国产无矿砖一线二线图 | 天天操夜夜爱 | a级欧美片免费观看 | 91视频高清| 久久夜色精品国产亚洲 | 精品欧美乱码久久久久久 | 一级毛片视频 | 日本视频一区在线观看免费 | 国产成人久久 | 日本黄色大片免费观看 | 日韩在线激情 | 一区二区三区四区在线 | 九九福利影院 | 91白丝制服被啪到喷水在线 | 久久久久久亚洲 | 日韩一区二区在线视频 | 日本一区欧美 | 国产欧美综合精品一区二区 | 人人看人人看 | 亚洲综合区 | 成人不卡 | 国产色综合一区二区三区 | 亚洲一区二区三区在线播放 | 国产一级特黄aa大片免费 | 综合成人在线 | 一区二区免费看 | youjizz欧美| 精品久久久久久亚洲综合网 | 久久蜜桃亚洲一区二区 | 亚洲精品不卡久久久久久 | 青青国产在线视频 | 久久精品视频免费 |