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