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()
感兴趣的朋友可以调试运行一下本文实例,并根据自身需求对代码加以改进和完善。

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics



HadiDB: A lightweight, high-level scalable Python database HadiDB (hadidb) is a lightweight database written in Python, with a high level of scalability. Install HadiDB using pip installation: pipinstallhadidb User Management Create user: createuser() method to create a new user. The authentication() method authenticates the user's identity. fromhadidb.operationimportuseruser_obj=user("admin","admin")user_obj.

Python is widely used in the fields of web development, data science, machine learning, automation and scripting. 1) In web development, Django and Flask frameworks simplify the development process. 2) In the fields of data science and machine learning, NumPy, Pandas, Scikit-learn and TensorFlow libraries provide strong support. 3) In terms of automation and scripting, Python is suitable for tasks such as automated testing and system management.

You can learn basic programming concepts and skills of Python within 2 hours. 1. Learn variables and data types, 2. Master control flow (conditional statements and loops), 3. Understand the definition and use of functions, 4. Quickly get started with Python programming through simple examples and code snippets.

It is impossible to view MongoDB password directly through Navicat because it is stored as hash values. How to retrieve lost passwords: 1. Reset passwords; 2. Check configuration files (may contain hash values); 3. Check codes (may hardcode passwords).

As a data professional, you need to process large amounts of data from various sources. This can pose challenges to data management and analysis. Fortunately, two AWS services can help: AWS Glue and Amazon Athena.

MySQL database performance optimization guide In resource-intensive applications, MySQL database plays a crucial role and is responsible for managing massive transactions. However, as the scale of application expands, database performance bottlenecks often become a constraint. This article will explore a series of effective MySQL performance optimization strategies to ensure that your application remains efficient and responsive under high loads. We will combine actual cases to explain in-depth key technologies such as indexing, query optimization, database design and caching. 1. Database architecture design and optimized database architecture is the cornerstone of MySQL performance optimization. Here are some core principles: Selecting the right data type and selecting the smallest data type that meets the needs can not only save storage space, but also improve data processing speed.

The steps to start a Redis server include: Install Redis according to the operating system. Start the Redis service via redis-server (Linux/macOS) or redis-server.exe (Windows). Use the redis-cli ping (Linux/macOS) or redis-cli.exe ping (Windows) command to check the service status. Use a Redis client, such as redis-cli, Python, or Node.js, to access the server.

To read a queue from Redis, you need to get the queue name, read the elements using the LPOP command, and process the empty queue. The specific steps are as follows: Get the queue name: name it with the prefix of "queue:" such as "queue:my-queue". Use the LPOP command: Eject the element from the head of the queue and return its value, such as LPOP queue:my-queue. Processing empty queues: If the queue is empty, LPOP returns nil, and you can check whether the queue exists before reading the element.
