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

基于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_date
    except DateNotExist:
        return None

def display_message():
    # 随机选择一条祝福语
    message = random.choice(blessings)
    return message

def 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 创建一个简单的窗口,显示中秋节日期和祝福信息。

运行程序

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

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


http://www.kler.cn/news/303016.html

相关文章:

  • C#笔记7 网络通信抽象,Socket类的介绍和简单使用
  • 逆向工程 反编译 C# net core
  • 布偶猫应该喂什么猫罐头:交响乐金罐、希喂、尾巴生活测评
  • 复现PointNext代码
  • 【Qt笔记】QGroupBox控件详解
  • 搭建一个大模型API服务
  • 代码随想录打卡Day29
  • 安宝特案例 | AR如何大幅提升IC封装厂检测效率?
  • C++20标准对线程库的改进:更安全、更高效的并发编程
  • 基于SpringBoot+Vue的民宿管理系统
  • pip install “git+https://xxx“报错error: subprocess-exited-with-error
  • Rust:深入浅出说一说 Error 类型
  • Oracle数据库中的Oracle Real Application Clusters是什么
  • SpringBoot动态SQL
  • 第15-02章:理解Class类并获取Class实例
  • leetcode1.两数之和
  • 编写XBOX控制器实现鼠标键盘输入
  • Python | Leetcode Python题解之第400题第N位数字
  • Iceberg与SparkSQL写操作整合
  • 【IP协议】IP协议报头结构(上)
  • Entity Framework (EF)框架中三种主要的数据加载策略
  • 反序列化漏洞练习1
  • Java实现简易计算器功能(idea)
  • Node.js发票识别接口助力企业实现发票的精准高效管理
  • golang学习笔记10——golang 的 Gin 框架,快速构建高效 Web 应用
  • 【Go】使用Goland创建第一个Go项目
  • 微服务杂谈
  • Android Studio打开Modem模块出现:The project ‘***‘ is not a Gradle-based project
  • 北京市推进车路城协同发展的创新实践与未来展望
  • 【数据结构与算法 | 灵神题单 | 删除链表篇】力扣3217, 82, 237