废话不多说,直接上代码

import tkinter
import datetime
from tkinter import *
from tkinter.ttk import *
from tkinter import messagebox

#获取今天的日期
today = datetime.date.today()

#判断输入的日期是否合法
def is_date(date):
    try:
        datetime.datetime.strptime(date,"%Y-%m-%d")
        return True
    except:
        return False

#计算两个日期的差的主函数
def riqichajisuan():
    riqi1=u1.get()
    riqi2=p1.get()
    if is_date(riqi1) and is_date(riqi2):
        date1 = datetime.datetime.strptime(riqi1,"%Y-%m-%d")
        date2 = datetime.datetime.strptime(riqi2,"%Y-%m-%d")
        date_difference=date2-date1
        result=date_difference.days
        b=messagebox.showinfo('计算结果','这两个日期之间相差:'+ str(result) + '天')
    elif riqi1 == '' and riqi2 == '':
        sjk=messagebox.showerror('错误','两个日期均未输入或输入格式有误\n请重新输入正确格式的日期!')        
    elif riqi1 == '' :
        c=messagebox.showerror('错误','日期一未输入或输入格式有误\n请重新输入正确格式的日期!')
    elif riqi2 == '' :
        cqw=messagebox.showerror('错误','日期二未输入或输入格式有误\n请重新输入正确格式的日期!')
    else:
        a=messagebox.showerror('错误','输入的日期格式有误\n请重新输入正确格式的日期!')

#计算两个日期的差的主窗体
def riqicha():
    def tuichu():
        top1.destroy()
        root2.state('normal')
    root2.state('icon')
    top1=Toplevel()
    top1.title('计算日期差')
    top1.resizable(width=False, height=False)
    width = 200
    heigh = 140
    screenwidth = top1.winfo_screenwidth()
    screenheight = top1.winfo_screenheight()
    top1.geometry('%dx%d+%d+%d'%(width, heigh, (screenwidth-width)/2, (screenheight-heigh)/2 - 70))
    tkinter.Label(top1,text='请在下面输入需要计算的日期:').place(width=200,height=30,x=0,y=3)
    tkinter.Label(top1,text='格式:年-月-日 如:2022-1-1').place(width=200,height=20,x=0,y=23)
    tkinter.Label(top1,text='日期一:').place(x=3,y=43)
    tkinter.Label(top1,text='日期二:').place(x=3,y=73)
    today = datetime.date.today()
    global u1
    u1=StringVar()
    b=tkinter.Entry(top1,textvariable=u1,width=20).place(x=52,y=43)
    global p1
    p1=StringVar()
    c=tkinter.Entry(top1,textvariable=p1,width=20).place(x=52,y=73)
    Button(top1,text='计算',command=riqichajisuan).place(width=60,height=30,x=23,y=101)
    Button(top1,text='退出',command=tuichu).place(width=60,height=30,x=117,y=101)

#判断日期属于第几周星期几的计算函数
def panduanxingqi():
    riqi=u2.get()
    if is_date(riqi):
        date = datetime.datetime.strptime(riqi,"%Y-%m-%d")
        calendar = datetime.date.isocalendar(date)
        result1 = '该日期是{}年第{}周星期{}'.format(calendar[0],calendar[1],calendar[2])
        d=messagebox.showinfo('计算结果',result1)
    elif riqi == '':
        e=messagebox.showerror('错误','未输入任何日期\n请重新输入正确格式的日期!')
    else:
        f=messagebox.showerror('错误','输入的日期格式有误\n请重新输入正确格式的日期!')

#判断日期属于第几周星期几的主窗体
def panxingqi():
    def tuichu():
        top2.destroy()
        root2.state('normal')
    root2.state('icon')
    top2=Toplevel()
    top2.title('判断星期几')
    top2.resizable(width=False, height=False)
    width = 200
    heigh = 140
    screenwidth = top2.winfo_screenwidth()
    screenheight = top2.winfo_screenheight()
    top2.geometry('%dx%d+%d+%d'%(width, heigh, (screenwidth-width)/2, (screenheight-heigh)/2 - 70))
    tkinter.Label(top2,text='请在下面输入需要计算的日期:').place(width=200,height=30,x=0,y=3)
    tkinter.Label(top2,text='格式:年-月-日 如:2022-1-1').place(width=200,height=20,x=0,y=23)
    tkinter.Label(top2,text='日期:').place(x=3,y=53)
    today = datetime.date.today()
    global u2
    u2=StringVar()
    b=tkinter.Entry(top2,textvariable=u2,width=20).place(x=52,y=53)
    Button(top2,text='计算',command=panduanxingqi).place(width=60,height=30,x=23,y=101)
    Button(top2,text='退出',command=tuichu).place(width=60,height=30,x=117,y=101)

#判断日期是该年的第几天的计算函数
def panduantianshu():
    riqi3=u3.get()
    if is_date(riqi3):
        y,m,d=map(int,riqi3.split("-"))
        D=0
        days=[31,0,31,30,31,30,31,31,30,31,30,31]
        if ((y%400==0)|((y%4==0)&(y%100!=0))):
            days[1]=29
        else:
            days[1]=28
        for i in range(m-1):
            D=D+days[i]
        result2 = "该日期是{}年的第{}天".format(y,D+d)
        res=messagebox.showinfo('计算结果',result2)
    elif riqi3 == '':
        ero=messagebox.showerror('错误','未输入任何日期\n请重新输入正确格式的日期!')
    else:
        op=messagebox.showerror('错误','输入的日期格式有误\n请重新输入正确格式的日期!')

#判断日期是该年的第几天的主窗体
def pantianshu():
    def tuichu():
        top3.destroy()
        root2.state('normal')
    root2.state('icon')
    top3=Toplevel()
    top3.title('判断第几天')
    top3.resizable(width=False, height=False)
    width = 200
    heigh = 140
    screenwidth = top3.winfo_screenwidth()
    screenheight = top3.winfo_screenheight()
    top3.geometry('%dx%d+%d+%d'%(width, heigh, (screenwidth-width)/2, (screenheight-heigh)/2 - 70))
    tkinter.Label(top3,text='请在下面输入需要计算的日期:').place(width=200,height=30,x=0,y=3)
    tkinter.Label(top3,text='格式:年-月-日 如:2022-1-1').place(width=200,height=20,x=0,y=23)
    tkinter.Label(top3,text='日期:').place(x=3,y=53)
    today = datetime.date.today()
    global u3
    u3=StringVar()
    b=tkinter.Entry(top3,textvariable=u3,width=20).place(x=52,y=53)
    Button(top3,text='计算',command=panduantianshu).place(width=60,height=30,x=23,y=101)
    Button(top3,text='退出',command=tuichu).place(width=60,height=30,x=117,y=101)

#判断用户选择的模式
def panduan():
    if v.get()==mode[0]:
        a=messagebox.showerror('错误','您没有选择任何功能\n请重新选择!')
    if v.get()==mode[1]:
        riqicha()
        root2.state('icon')
    if v.get()==mode[2]:
        panxingqi()
        root2.state('icon')
    if v.get()==mode[3]:
        pantianshu()
        root2.state('icon')
           
root2=Tk()
root2.title('日期计算器')
width = 200
heigh = 120
screenwidth = root2.winfo_screenwidth()
screenheight = root2.winfo_screenheight()
root2.geometry('%dx%d+%d+%d'%(width, heigh, (screenwidth-width)/2, (screenheight-heigh)/2 - 70))
tkinter.Label(root2,text='选择你需要的功能:').place(x=50,y=1,width=110,height=30)
mode=("点此选择","计算两个日期的差","判断日期属于第几周星期几","判断日期是该年的第几天")
v = StringVar(root2)
om = OptionMenu(root2,v,*mode).place(width=190,height=30,x=5,y=40)
Button(root2,text="确定",command=panduan).place(width=70,height=30,x=20,y=80)
Button(root2,text="退出",command=root2.destroy).place(width=70,height=30,x=110,y=80)
root2.mainloop()

运行效果:

python tkinter 下一页_python tkinter 下一页

python tkinter 下一页_python_02

python tkinter 下一页_开发语言_03

python tkinter 下一页_开发语言_04

python tkinter 下一页_python tkinter 下一页_05

python tkinter 下一页_日期格式_06

python tkinter 下一页_开发语言_07

python tkinter 下一页_python tkinter 下一页_08