当前位置: 首页 > 后端技术 > Python

Python简单小部件-计算天数

时间:2023-03-26 13:51:11 Python

简单的小部件|计算天数需要给定日期,格式为“2020-2-12”,计算2020年的日期?实现思路是使用tkinter和tkinter.ttk来编排界面;使用日历计算天数;标准化输入日期的格式;对月份和天数进行逻辑判断;输入错误时抛出异常提示。代码实现#-*-编码:utf-8-*-'''@文件:calc_day_v2.py@时间:2020/02/1220:33:22@作者:大梦三千秋@联系人:yiluolion@126.com'''#Puttheimportlibherefromtkinterimport*importtkinter.messageboxasmessageboxfromtkinterimportttkimportcalendarclassMyException(BaseException):'''Customexceptionclass'''def__init__(self,message):self.message=messagedefcalculate(*args):'''计算天数的方法'''try:#用来存储天数nums=0#获取输入框的数据year,month,day=[int(elem)forelemindate.get().split('-')]#月份的判断,指定在1-12之间if1<=month<=12:#遍历并计算month_x在range(1,month+1)中的天数:#计算每个月的天数_,month_day=calendar.monthrange(year,month_x)#遍历的月份等于当前月份,对天数进行正则化ifmonth_x==month:#如果数文本输入框给定的天数不匹配,如果day>month_day会抛出异常:raiseMyException("信息输入错误,注意天数!")continuenums+=month_daynums+=day#给文本框设置值days.set(nums)the_year.set(year)else:#月份超出范围,抛出异常raiseMyException("Informationinput错误,注意月份!")exceptMyExceptionase:messagebox.showinfo(title="Inputinformationerror",message=e)exceptExceptionase:#print(e)messagebox.showinfo(title="Inputinformationerror",message="输出格式错误,按2020-2-12格式输入注意月份和天数!")root=Tk()root.title("计算天数")#设置框架mainframe=ttk.Frame(root,padding="331212")mainframe.grid(column=0,row=0,sticky=(N,S,E,W))root.columnconfigure(0,weight=1)root.rowconfigure(0,weight=1)date=StringVar()the_year=StringVar()days=StringVar()#文本框组件的布局date_entry=ttk.Entry(mainframe,width=10,textvariable=date)date_entry.grid(column=2,row=1,sticky=(W,E))#标签和按钮的布局ttk.Label(大型机,text="示例:2020-2-12").grid(column=5,row=1,sticky=(W,E))ttk.Label(mainframe,textvariable=days).grid(column=4,row=2,sticky=(W,E))ttk.Label(mainframe,textvariable=the_year).grid(column=2,row=2,sticky=(W,E))ttk.Button(mainframe,text=“计算”,命令=calculate).grid(column=5,row=3)ttk.Label(mainframe,text="Date:").grid(column=1,row=1,sticky=E)ttk.Label(mainframe,text="Thisdayis").grid(column=1,row=2,sticky=E)ttk.Label(mainframe,text="thefirstdayoftheyear").grid(column=3,行=2、sticky=E)ttk.Label(mainframe,text="day").grid(column=5,row=2,sticky=W)#setpaddingforchildinmainframe.winfo_children():child.grid_configure(padx=5,pady=5)date_entry.focus()root.bind('',calculate)root.mainloop()的使用正确输入效果如下:输入不符合格式,错误提示效果:月份输入错误,提示效果如下:天数超出范围时的错误提示效果当前月份:本文内容主要是昨天tkinter模块的扩展使用,实现一个计算天数的小工具欢迎关注微信公众号《书所集录》