当前位置: 首页 > news >正文

基于Python实现一个庆祝中秋节的小程序

功能包括:

  1. 使用复杂的库来计算农历日期:可以使用 lunarcalendar 库来计算农历日期。
  2. 提供更多的祝福语:可以通过随机选择祝福语来增加趣味性。
  3. 加入图形用户界面 (GUI):可以使用 tkinter 库来创建一个简单的图形用户界面。

我们可以将这些功能结合到一个程序中。以下是一个扩展的示例:

安装依赖

首先,你需要安装 lunarcalendar 库。可以通过以下命令安装:

pip install lunarcalendar

完整代码示例

import tkinter as tk
from tkinter import messagebox
from datetime import datetime
from lunarcalendar import Converter, DateNotExist
import random# 祝福语列表
blessings = ["🎉 中秋节快乐!🎉","🌕 月圆人圆,祝愿大家团团圆圆,幸福美满!🌕","🏮 祝您中秋快乐,家庭幸福!🏮","🍂 愿你的生活像满月一样圆满!🍂","🌟 中秋佳节,祝您万事如意!🌟"
]def get_mid_autumn_date(year):try:# 获取农历8月15日的公历日期lunar_date = Converter().lunar_to_solar(year, 8, 15)return lunar_dateexcept DateNotExist:return Nonedef display_message():# 随机选择一条祝福语message = random.choice(blessings)return messagedef show_gui():# 创建主窗口root = tk.Tk()root.title("中秋节祝福")# 获取当前年份now = datetime.now()year = now.year# 获取今年中秋节的日期mid_autumn_date = get_mid_autumn_date(year)if mid_autumn_date:date_str = mid_autumn_date.strftime('%Y年%m月%d日')else:date_str = "日期无法计算"# 显示祝福信息message = display_message()# 创建并放置标签label_date = tk.Label(root, text=f"今年的中秋节日期是: {date_str}", font=("Arial", 14))label_date.pack(pady=10)label_message = tk.Label(root, text=message, font=("Arial", 14))label_message.pack(pady=10)# 显示窗口root.mainloop()if __name__ == "__main__":show_gui()

代码解释:

  1. 计算农历日期:使用 lunarcalendar 库的 Converter 类来将农历8月15日转换为公历日期。
  2. 祝福语:使用 random.choice 从预定义的祝福语列表中随机选择一条祝福语。
  3. 图形用户界面 (GUI):使用 tkinter 创建一个简单的窗口,显示中秋节日期和祝福信息。

运行程序

运行这个程序时,它会弹出一个窗口,显示今年中秋节的日期和一条随机的祝福语。这样,你可以在节日里为自己和他人带来一些节日的欢乐。

希望这个扩展版程序符合你的需求!如果你有其他要求或者想进一步修改,请告诉我。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • leetcode刷题day18|二叉树Part06( 530.二叉搜索树的最小绝对差、501.二叉搜索树中的众数、236. 二叉树的最近公共祖先)
  • ​经​纬​恒​润​二​面​​三​七​互​娱​一​面​​元​象​二​面​
  • 演示:基于WPF的自绘的中国地铁轨道控件
  • 相图的科学应用,陶瓷材料创新
  • Centos挂载和删除nfs
  • 滑动窗口算法—字符串的排列
  • linux驱动开发-地址映射
  • uniapp小程序,使用腾讯地图获取定位
  • Vue组件:依赖注入provide和inject的使用
  • Python中的单例模式:从入门到精通
  • 【秋招笔试】9.09阿里国际秋招(已改编)-三语言题解
  • Hadoop Pig
  • Vue3+setup+el-pagination+el-select封装下拉分页及懒加载
  • git:分支管理
  • 如果java垮了其他语言社区就遭殃了,这个说法可信吗?
  • JS中 map, filter, some, every, forEach, for in, for of 用法总结
  • @jsonView过滤属性
  • 【前端学习】-粗谈选择器
  • 8年软件测试工程师感悟——写给还在迷茫中的朋友
  • es的写入过程
  • JS函数式编程 数组部分风格 ES6版
  • log4j2输出到kafka
  • ng6--错误信息小结(持续更新)
  • php的插入排序,通过双层for循环
  • 从地狱到天堂,Node 回调向 async/await 转变
  • 当SetTimeout遇到了字符串
  • 开源中国专访:Chameleon原理首发,其它跨多端统一框架都是假的?
  • 离散点最小(凸)包围边界查找
  • 排序算法之--选择排序
  • 如何使用Mybatis第三方插件--PageHelper实现分页操作
  • 数据科学 第 3 章 11 字符串处理
  • scrapy中间件源码分析及常用中间件大全
  • 继 XDL 之后,阿里妈妈开源大规模分布式图表征学习框架 Euler ...
  • 通过调用文摘列表API获取文摘
  • ​zookeeper集群配置与启动
  • (1)Nginx简介和安装教程
  • (8)Linux使用C语言读取proc/stat等cpu使用数据
  • (Git) gitignore基础使用
  • (苍穹外卖)day03菜品管理
  • (第61天)多租户架构(CDB/PDB)
  • (规划)24届春招和25届暑假实习路线准备规划
  • (七)Flink Watermark
  • (切换多语言)vantUI+vue-i18n进行国际化配置及新增没有的语言包
  • (十五)Flask覆写wsgi_app函数实现自定义中间件
  • (转)ObjectiveC 深浅拷贝学习
  • (转载)PyTorch代码规范最佳实践和样式指南
  • (转载)利用webkit抓取动态网页和链接
  • .net framework4与其client profile版本的区别
  • .NET 设计模式初探
  • .net 生成二级域名
  • .net通用权限框架B/S (三)--MODEL层(2)
  • .sh文件怎么运行_创建优化的Go镜像文件以及踩过的坑
  • .sys文件乱码_python vscode输出乱码
  • /etc/sudoers (root权限管理)
  • @ 代码随想录算法训练营第8周(C语言)|Day53(动态规划)