赞
踩
纪念日计算工具 是在了解GUI的规程中,突发奇想写的一个小东西,用到的是Python的 tkinter 控件。本人非开发人员,渣渣数据分析师,如遇大佬请轻喷,如有代码错误或不规范,感谢指正。
输入纪念日,得到距离下一个纪念日的时间长度(天),根据时间差的逻辑写成 .py文件,要注意的是年份差距和闰年(2月29日)的处理方式。用 pyinstaller 生成可执行的.exe文件就可以啦。
1.通过闰年平年来判断天数
def runn(x): if x%400==0: return 366 elif x%4==0 and x%100!=0: return 366 else: return 365 days=runn(int(datetime.datetime.now().strftime('%Y')))
2.计算时间差(天数)
def calculate(a): b=pd.to_datetime(a) if runn(b.year)==366 and b.month==2 and b.day==29: dd=1461 else: dd=days if b.year<datetime.datetime.now().year: years=datetime.datetime.now().year-b.year b=b.replace(year = b.year + years) today=pd.to_datetime(datetime.datetime.now().strftime('%Y-%m-%d')) if (b-today)/pd.Timedelta(1,'D')>=0: dif=(b-today)/pd.Timedelta(1,'D') else: dif=(b-today)/pd.Timedelta(1,'D')+dd return dif
源代码:
import tkinter import time import datetime import pandas as pd from dateutil.relativedelta import relativedelta # 计算纪念日距离天数 def calculate(a): b=pd.to_datetime(a) if runn(b.year)==366 and b.month==2 and b.day==29: dd=1461 else: dd=days if b.year<datetime.datetime.now().year: years=datetime.datetime.now().year-b.year b=b.replace(year = b.year + years) today=pd.to_datetime(datetime.datetime.now().strftime('%Y-%m-%d')) if (b-today)/pd.Timedelta(1,'D')>=0: dif=(b-today)/pd.Timedelta(1,'D') else: dif=(b-today)/pd.Timedelta(1,'D')+dd return dif def runn(x): if x%400==0: return 366 elif x%4==0 and x%100!=0: return 366 else: return 365 days=runn(int(datetime.datetime.now().strftime('%Y'))) def gui_cre(): # 创建主窗口 root = tkinter.Tk() # 设置窗口大小 root.geometry("500x100") root.title("纪念日计算器") # 设置输入标签组件 labelName1 = tkinter.Label(root, text='纪念日日期: ', justify=tkinter.RIGHT, width=50) labelName1.place(x=10, y=10, width=80, height=20) # 设置输出标签组件 labelName1_o = tkinter.Label(root, text='纪念日倒计时(天): ', justify=tkinter.RIGHT, width=50) labelName1_o.place(x=250, y=10, width=100, height=20) # 创建输入文本框组件 varName1 = tkinter.StringVar(root, value='') entryName1 = tkinter.Entry(root, width=80, textvariable=varName1) entryName1.place(x=100, y=10, width=80, height=20) # 创建输出文本框组件 anni1 = tkinter.StringVar(root, value='') Name1 = tkinter.Entry(root, width=80, textvariable=anni1) Name1.place(x=350, y=10, width=80, height=20) # 创建计算按钮组件,cal()主要把数据从输入文本框取出来 def cal(): raw1 =varName1.get() print("raw1:",raw1) ay = calculate(raw1) print("ay:",ay) anni1.set(int(ay)) b1 = tkinter.Button(root, text='计 算', command=cal) b1.place(x=100, y=60, width=50, height=20) # 创建清除按钮组件 def cancel(): varName1.set('') anni1.set('') b2 = tkinter.Button(root, text='清 除', command=cancel) b2.place(x=300, y=60, width=50, height=20) # 启动循环检测 root.mainloop() if __name__ == '__main__': gui_cre()
1.若没有安装pyinstaller可先用pip安装,可使用镜像加快安装速度
python -m pip install pyinstaller -i https://pypi.tuna.tsinghua.edu.cn/simple 1
1.切换到保存的 .py文件路径,打包为 .exe文件
pyinstaller -F -w 文件名.py 1
在dist目录下生成.exe文件,可双击运行。
你学会了吗 需要源码获取加群哦:1136192749
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。