用python写一个纪念日计算工具

  • 前言
    • 主要内容
      • 日期计算函数
      • GUI布局
      • 用pyinstaller打包生成.exe文件
      • 打包后的.exe文件预览
      • 运行结果
    • 最后提前祝马英俊生日快乐吧~

前言

纪念日计算工具 是在了解GUI的规程中,突发奇想写的一个小东西,用到的是Python的 tkinter 控件。本人非开发人员,渣渣数据分析师,如遇大佬请轻喷,如有代码错误或不规范,感谢指正。

主要内容

输入纪念日,得到距离下一个纪念日的时间长度(天),根据时间差的逻辑写成 .py文件,要注意的是年份差距和闰年(2月29日)的处理方式。用 pyinstaller 生成可执行的.exe文件就可以啦。

日期计算函数

1.通过闰年平年来判断天数

def runn(x):if x%400==0:return 366elif x%4==0 and x%100!=0:return 366else: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=1461else:dd=daysif b.year<datetime.datetime.now().year:years=datetime.datetime.now().year-b.yearb=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')+ddreturn dif

GUI布局

源代码:

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=1461else:dd=daysif b.year<datetime.datetime.now().year:years=datetime.datetime.now().year-b.yearb=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')+ddreturn difdef runn(x):if x%400==0:return 366elif x%4==0 and x%100!=0:return 366else: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()

用pyinstaller打包生成.exe文件

1.若没有安装pyinstaller可先用pip安装,可使用镜像加快安装速度

python -m pip install pyinstaller -i https://pypi.tuna.tsinghua.edu.cn/simple

1.切换到保存的 .py文件路径,打包为 .exe文件

pyinstaller -F -w 文件名.py

打包后的.exe文件预览

在dist目录下生成.exe文件,可双击运行。

运行结果

最后提前祝马英俊生日快乐吧~

用Python写一个纪念日计算工具相关推荐

  1. 用python写一个纪念日计算工具!有对象的特别注意了!

    前言 纪念日计算工具 是在了解GUI的规程中,突发奇想写的一个小东西,用到的是Python的 tkinter 控件.本人非开发人员,渣渣数据分析师,如遇大佬请轻喷,如有代码错误或不规范,感谢指正. 主 ...

  2. 使用Python写的CRC计算工具

    公司需要加入域,强迫安装了McAfee杀毒软件,把我常用的一个CRC计算工具给删了,还无法添加白名单,心中千万只草拟吗.所以只好自己写一个同时支持字符串和文件的CRC16/32计算工具. 已打包好的执 ...

  3. 用python写一个动态壁纸工具

    screenpv.py: use pyqt5 + opencv to open a video or camera 首先用pyqt5+opencv写一个全屏播放视频的工具 import sys imp ...

  4. 用Python写一个图片标注工具

    程序补充库 # tkinter $ sudo apt intall python-tk # PIL (Python Image Library) $ sudo apt-get install pyth ...

  5. 如何用python写小工具_用python写一个录音小工具

    Python的paramiko,wxPython库的应用 Sound eXchange 命令行 需求 最近在给一个做语音识别的项目做QA工作.众所周知,此类人工智能方面的项目都需要一些数据收集的工作. ...

  6. 用python写一个ip查询工具库

    首先附上一张高清有码的图,效果如图所示. 最近喜欢上了Python,总想用python搞点事情. 写此工具的目的 最近一段时间遇见过不少钓鱼网站,于是乎就在想,这些网站的服务器都在哪里? 为何如此猖獗 ...

  7. Python写一个股价计算的脚本

    股价计算脚本 1. 常量计算方法 首先我们定义三个常量,分别是:公司名.股票代码.当前股价 随后在字符串前面加上 f 就可以进行快速格式化,不需要考虑数据类型,但是不能进行精度的控制,进行快速占位符输 ...

  8. python小工具小发明_【kimol君的无聊小发明】—用python写截屏小工具

    前言 今天我看了一下自己的文件夹,发现了自己写了许多似乎很无聊的代码.于是乎,一个想法油然而生:"生活已经很无聊了,不如再无聊一点叭". 说干就干,那就开一个专题,我们称之为kim ...

  9. 【kimol君的无聊小发明】—用python写截屏小工具

    [kimol君的无聊小发明]-用python写截屏小工具 前言 一.技术实现 1. 相关库 2. 定义窗口 3. 绘制工具条 4. 定义事件函数 二.后续改进 写在最后 前言 今天我看了一下自己的文件 ...

最新文章

  1. 用友BIP平台ISV伙伴快速壮大,32款融合产品与联合解决方案隆重发布
  2. jboss resin tomcat 相关
  3. 有关日志打印的几点经验
  4. java面试宝典 之 物流配送路径优化问题分析与算法解读
  5. 总结1:Ajax上传图片至阿里云服务器
  6. 又一批长事务,P0故障谁来背锅?
  7. 全球品牌百强榜单出炉:中国品牌仅有华为上榜
  8. 总结之《征服C指针》
  9. 背包九讲问题——超详细
  10. python 小程序搜索排名-用python2.7.9 写个小程序搜索某个目录下行有某关键字
  11. Oracle事务隔离级别
  12. python十大重点_你见过的最全面的 Python 重点
  13. 人力资源HR管理系统源码
  14. 计算机键盘无法使用的原因,电脑键盘失灵的原因及解决方法
  15. 什么是绿色计算(Green Computing)?
  16. [人脸关键点检测] Wing loss 论文解读
  17. 为什么AI公司都在一边融资,一边投资? | 甲子光年
  18. css让四个div并排显示,css如何让两个div并排显示?
  19. win10系统显示打印机未连接到服务器,Win10系统连接打印机显示未指定设备的解决教程...
  20. c语言%u的作用,C语言中%p,%u,%lu都有什么用处

热门文章

  1. 你需了解:商务送礼的四大规矩
  2. 搭建一个网站大概需要多少钱
  3. 清华操作系统实验ucore_lab2
  4. NPOI编辑WORD文档
  5. x264 2pass编码说明
  6. 软工实践 - 第十一次作业 Alpha 冲刺 (3/10)
  7. Mysql报错130_Mysql报错Forcing close of thread 139 user: 'root'
  8. 网站如何添加访客统计代码
  9. RGB图像转HSI直方图均衡化后再转回RGB
  10. quartus 复制IP核