最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2014年08月21日 11:31:49   投稿:shichen2014  
這篇文章主要介紹了Python創(chuàng)建日歷實例,不使用Python提供的calendar實現(xiàn),需要的朋友可以參考下

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

此程序在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的情況(應(yīng)該包含所有的情況)。
5.將1-31從得到的位置開始打印出來,以7為一行。
6.更新日歷,當對日歷頭進行操作(改變?nèi)掌跁r)就會更新日歷顯示的內(nèi)容。
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'
  # 對年月做了判斷,日只是加了上下限,沒有根據(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))% 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():
  ''' 更新日歷'''
  #得到當前選擇的日期
  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):
  '''添加日歷頭'''
  # 得到當前的日期,設(shè)置為默認值
  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()

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

相關(guān)文章

  • Python中的并發(fā)處理之a(chǎn)syncio包使用的詳解

    Python中的并發(fā)處理之a(chǎn)syncio包使用的詳解

    本篇文章主要介紹了Python中的并發(fā)處理之a(chǎn)syncio包使用的詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-04-04
  • Python樹的重建實現(xiàn)示例

    Python樹的重建實現(xiàn)示例

    樹的重建是一種從給定的遍歷序列中恢復原樹結(jié)構(gòu)的算法,本文就來介紹一下Python樹的重建實現(xiàn)示例,具有一定的參考價值,感興趣的可以了解一下
    2023-11-11
  • python 使用uiautomator2連接手機設(shè)備的實現(xiàn)

    python 使用uiautomator2連接手機設(shè)備的實現(xiàn)

    這篇文章主要介紹了python 使用uiautomator2連接手機設(shè)備的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-04-04
  • pandas 顛倒列順序的兩種解決方案

    pandas 顛倒列順序的兩種解決方案

    這篇文章主要介紹了pandas 顛倒列順序的兩種解決方案,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • Pycharm運行加載文本出現(xiàn)錯誤的解決方法

    Pycharm運行加載文本出現(xiàn)錯誤的解決方法

    今天小編就為大家分享一篇Pycharm運行加載文本出現(xiàn)錯誤的解決方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06
  • pytorch?tensor按廣播賦值scatter_函數(shù)的用法

    pytorch?tensor按廣播賦值scatter_函數(shù)的用法

    這篇文章主要介紹了pytorch?tensor按廣播賦值scatter_函數(shù)的用法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • 基于Python實現(xiàn)拉格朗日插值法

    基于Python實現(xiàn)拉格朗日插值法

    拉格朗日插值法是以法國十八世紀數(shù)學家約瑟夫·拉格朗日命名的一種多項式插值方法。本文將利用Python語言實現(xiàn)這一插值法,需要的可以參考一下
    2022-12-12
  • Python合并多個裝飾器小技巧

    Python合并多個裝飾器小技巧

    這篇文章主要介紹了Python合并多個裝飾器小技巧,本文用改寫調(diào)用函數(shù)的方式實現(xiàn)把多個裝飾器合并成一行、一個函數(shù)來調(diào)用,需要的朋友可以參考下
    2015-04-04
  • flask框架實現(xiàn)修改密碼和免密登錄功能

    flask框架實現(xiàn)修改密碼和免密登錄功能

    flask是python web開發(fā)的常用框架之一。本文將講述flask如何實現(xiàn)修改密碼和免密登錄功能
    2021-05-05
  • Python腳本代碼加速運行優(yōu)化技巧

    Python腳本代碼加速運行優(yōu)化技巧

    這篇文章主要介紹了Python腳本代碼加速運行優(yōu)化技巧,Python是一種解釋性語言,雖然易于使用和閱讀,但在性能方面可能不如編譯語言如C或C++,然而,通過一些優(yōu)化技巧,可以顯著提高Python代碼的運行速度
    2021-04-04

最新評論

安西县| 陈巴尔虎旗| 苗栗市| 南靖县| 贵阳市| 同德县| 太谷县| 安庆市| 耿马| 阜新| 眉山市| 蒙阴县| 阿城市| 延边| 天等县| 长岛县| 青冈县| 酉阳| 兴宁市| 淮阳县| 阳原县| 承德县| 齐河县| 碌曲县| 瓦房店市| 清水县| 册亨县| 集贤县| 田东县| 阿拉尔市| 兰溪市| 三穗县| 金秀| 定襄县| 仪陇县| 永年县| 永泰县| 阳春市| 合阳县| 城市| 西充县|