首页 > 编程语言 >万年历python

万年历python

时间:2023-05-30 20:58:26浏览次数:40  
标签:万年历 python Button month year date calendar txt

import tkinter as tk
import tkinter.ttk as ttk
import datetime
 
import calendar
 
today_date=datetime.date.today()
today_date_year = int(today_date.year)
today_date_month = int(today_date.month)
today_date_week = today_date.isocalendar()
 
date_num_list = calendar.monthcalendar(today_date_year,today_date_month)
 
my_win=tk.Tk()
my_win.title("日历")
 
def calendar_date():
    win_calendar = tk.Toplevel(my_win)
    win_calendar.title("日历")
    win_calendar.geometry('300x250')
 
    calendar_Canvas = tk.Canvas(win_calendar,highlightthickness=0,width=300,height=250)
    calendar_Canvas.pack()
    year_list = tuple(range(today_date_year-10,today_date_year+1))
    month_list = tuple(range(1,13))
 
    def Button_year_jian():
        calendar_Canvas.delete(tk.ALL)
        year_txt1 = year_txt.get()
        year_txt2 = year_txt1-1
        year_txt.set(year_txt2)
        my_calendar()
 
    def Button_year_jia():
        calendar_Canvas.delete(tk.ALL)
        year_txt1 = year_txt.get()
        year_txt2 = year_txt1+1
        year_txt.set(year_txt2)
        my_calendar()
 
    def Button_month_jian():
        calendar_Canvas.delete(tk.ALL)
        month_txt1 = month_txt.get()
        month_txt2 = 12 if month_txt1==1 else month_txt1-1
        month_txt.set(month_txt2)
        my_calendar()
 
    def Button_month_jia():
        calendar_Canvas.delete(tk.ALL)
        month_txt1 = month_txt.get()
        month_txt2 = 1 if month_txt1==12 else month_txt1+1
        month_txt.set(month_txt2)
        my_calendar()
        
    def Button_date(event):
        year_txt1 = year_txt.get()
        month_txt1 = month_txt.get()
        Button_txt = int(event.widget['text'])
        
        new_date = datetime.date(year_txt1,month_txt1,Button_txt)
        date.set(new_date)
 
    def year_month_date(event):
        my_calendar()
 
        
 
    ttk.Button(calendar_Canvas,width=2,text="◀",command= Button_year_jian).place(x=5,y=5)
    year_txt = tk.IntVar()
    year_txt.set(today_date_year)
    year_date = ttk.Combobox(calendar_Canvas,width=6,values=year_list,textvariable=year_txt)
    year_date.place(x=30,y=7)
    year_date.bind("<Return>",year_month_date)
    ttk.Button(calendar_Canvas,width=2,text="▶",command= Button_year_jia).place(x=95,y=5)
 
    ttk.Button(calendar_Canvas,width=2,text="◀",command= Button_month_jian).place(x=185,y=5)
    month_txt = tk.IntVar()
    month_txt.set(today_date_month)
    month_date = ttk.Combobox(calendar_Canvas,width=6,values=month_list,textvariable=month_txt)
    month_date.place(x=210,y=7)
    month_date.bind("<Return>",year_month_date)
    ttk.Button(calendar_Canvas,width=2,text="▶",command= Button_month_jia).place(x=275,y=5)
 
 
 
    def my_calendar():
        calendar_Canvas.delete(all)
        
        date_num_list = calendar.monthcalendar(year_txt.get(),month_txt.get())
        date_num_y = 80
        
        calendar_Canvas.create_rectangle(15,40,285,60,fill="#d6d6db",width=0)
        week_list = ["一","二","三","四","五","六","日"]
        week_x = 30
        for i in week_list:
            calendar_Canvas.create_text(week_x,50,text=i)
            week_x = week_x+40
            
        for i in date_num_list:
            date_num_x = 30
            for ii in i:
                if ii == 0:
                    pass
                else:
                    My_date_Button = ttk.Button(calendar_Canvas,text=ii,width=2)
                    calendar_Canvas.create_window(date_num_x,date_num_y,window=My_date_Button)
                    My_date_Button.bind("<Button-1>", Button_date)
                date_num_x = date_num_x+40
            date_num_y = date_num_y+30
 
    my_calendar()
 
 
date = tk.StringVar()
date.set(today_date)
ttk.Entry(my_win,textvariable=date).pack(side="left",padx=5,pady=5)
 
ttk.Button(my_win,text="▼",width=2,command=calendar_date).pack(side="left",padx=5,pady=5)
 
 
my_win.mainloop()

 

标签:万年历,python,Button,month,year,date,calendar,txt
From: https://www.cnblogs.com/cocotun/p/17444433.html

相关文章

  • 【python】with as语句
    读文件读写文件是最常见的IO操作。python内置了读写文件的函数,用法和C是兼容的。读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘,所以,读写文件就是请求操作系统打开一个文件对象(通常称为文件描述符),然后,通过操......
  • python基础 14
    装饰器的简易版本核心思想: 在不改变被装饰对象内部代码和原有调用方式的基础之上在添加额外的功能#给被装饰对象添加额外的功能给index函数添加统计执行时间的功能defindex():time.sleep(3)index()importtimedefindex():time.sleep(3)p......
  • Python连接es笔记三之es更新操作
    本文首发于公众号:Hunter后端原文链接:Python连接es笔记三之es更新操作这一篇笔记介绍如何使用Python对数据进行更新操作。对于es的更新的操作,不用到Search()方法,而是直接使用es的连接加上相应的函数来操作,本篇笔记目录如下:获取连接update()update_by_query()批量......
  • Python 执行Javascript脚本
    一、安装第三方库pipinstallPyExecJS二、创建一个js文件//test.jsfunctionadd(a,b){returna+b}三、创建一个python文件#testJs.pyimportexecjsctx=execjs.compile(open('./test.js','r',encoding='utf-8').read())print(ctx.call('add&#......
  • python day6
    第一阶段第六章6.1数据容器 6.2列表列表中元素类型不限,可以混合 ["itheima",888,True]1#列表里面嵌套列表2my_list=[[1,2,3],[4,5,6]]3print(my_list)4print(type(my_list))6.3列表遍历下标定义可以反向 #列表里面嵌套列表取数据my_......
  • Python变量基础知识
    Python变量基础知识-Python专栏-万象专栏(wanxiangsucai.com) 举例:第一种:myName  myFriendName第二种:MyName  MyFriendName第二种:my_name  my_friend_name......
  • python split space
    发现自己写python的空格split还挺多坎的,尤其是最后一个是空格的情形:defsplit(s):i=0ans=[]whilei<len(s):start=i#findspacewhilei<len(s)ands[i]!='':i+=1ans.append(s[start:i])......
  • python中如何使用正则表达式查询字符串
    '''Createdon2019年12月2日@author:hp''''''上一篇文章介绍了那么多关于正则表达式的用法,现在终于到了python中如何使用正则表达式了,不急,请诸君慢慢来''''''之前在讲字符串时,已经说过了字符串的格式化输出,大家没看的可以看我的上一篇文章格式化输出时,是含有模式串......
  • 逆序的三位数 (10 分) python版
    逆序的三位数(10分)python版程序每次读入一个正3位数,然后输出按位逆序的数字。注意:当输入的数字含有结尾的0时,输出不应带有前导的0。比如输入700,输出应该是7。输入格式:每个测试是一个3位的正整数。输出格式:输出按位逆序的数。输入样例:123输出样例:321'''Createdon2019年11......
  • Python-7递归函数
    1.递归函数:自己调用自己,有来有回,一去一回"""-*-coding:utf-8-*-@FileName:recursion.py@Software:PyCharm@Time:2023/5/1016:04@Author:Panda"""#递归函数:recursion,自己调用自己,有来有回,一去一回defrecursion(n):print("未调用前{}"......