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

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

功能:

  1. 添加互动功能:允许用户选择不同的祝福语或者查询不同的国庆节信息。
  2. 动态背景音乐:播放国庆节相关的背景音乐。
  3. 增加节日小测验:提供一些关于国庆节的趣味小测验,让用户参与。
  4. 增强图形用户界面 (GUI):使用更多的 tkinter 控件,比如按钮、复选框等,使界面更加丰富和互动。

下面是一个更全面的示例代码,包括以上的改进:

完整代码示例

import tkinter as tk
from tkinter import PhotoImage, messagebox, StringVar, OptionMenu
from datetime import datetime
import random
import os
from pygame import mixer# 初始化 pygame 混音器
mixer.init()# 国庆节祝福语列表
blessings = ["🎉 国庆节快乐!🎉","🇨🇳 祝愿祖国繁荣昌盛,人民幸福安康!🇨🇳","🌟 庆祝国庆,祝您和您的家人幸福安康,万事如意!🌟","🏆 向伟大的祖国致敬,祝愿大家国庆节快乐!🏆","🎊 国庆佳节,愿你心想事成,家庭幸福!🎊"
]# 国庆节历史背景
history = ("国庆节(National Day),是中华人民共和国的国庆日,定于每年的10月1日。""这是庆祝中国成立的纪念日,1950年10月1日,毛泽东主席在天安门广场上宣布中华人民共和国的成立。""从那时起,每年10月1日,全国各地会举行盛大的庆祝活动,包括阅兵仪式、烟花表演以及各种文化活动。"
)# 小测验
quiz = {"国庆节是哪一天?": ["10月1日", "12月25日", "7月4日", "1月1日"],"中华人民共和国是哪一年成立的?": ["1949年", "1950年", "1960年", "1980年"]
}# 获取随机测验题目
def get_random_quiz():question, options = random.choice(list(quiz.items()))return question, optionsdef get_national_day_date(year):# 国庆节的日期为每年的10月1日return datetime(year, 10, 1)def display_message():# 随机选择一条祝福语message = random.choice(blessings)return messagedef play_music():# 播放背景音乐music_file = 'national_day_music.mp3'  # 确保你有这个音乐文件if os.path.isfile(music_file):mixer.music.load(music_file)mixer.music.play(-1)  # 循环播放else:print("未找到音乐文件,确保有'national_day_music.mp3'文件在当前目录")def stop_music():# 停止播放背景音乐mixer.music.stop()def show_gui():# 创建主窗口root = tk.Tk()root.title("国庆节庆祝")# 获取当前年份now = datetime.now()year = now.year# 获取今年国庆节的日期national_day_date = get_national_day_date(year)date_str = national_day_date.strftime('%Y年%m月%d日')# 创建并放置标签label_date = tk.Label(root, text=f"今年的国庆节日期是: {date_str}", font=("Arial", 14))label_date.pack(pady=10)label_message = tk.Label(root, text=display_message(), font=("Arial", 14))label_message.pack(pady=10)# 显示国庆节历史背景label_history = tk.Label(root, text="国庆节背景:", font=("Arial", 16, "bold"))label_history.pack(pady=10)text_history = tk.Text(root, height=5, width=50, wrap='word')text_history.insert('1.0', history)text_history.config(state='disabled')  # 使Text控件不可编辑text_history.pack(pady=10)# 添加国庆节相关的图片try:image = PhotoImage(file='national_day.png')  # 确保你有这个图片文件label_image = tk.Label(root, image=image)label_image.pack(pady=10)except tk.TclError:print("未找到图片文件,确保有'national_day.png'文件在当前目录")# 音乐控制music_var = StringVar(value="播放音乐")music_button = tk.Button(root, textvariable=music_var, command=lambda: play_music() if music_var.get() == "播放音乐" else stop_music())music_button.pack(pady=10)# 小测验def check_answer(answer):correct_answers = {"国庆节是哪一天?": "10月1日","中华人民共和国是哪一年成立的?": "1949年"}if answer == correct_answers[current_question.get()]:messagebox.showinfo("小测验", "回答正确!")else:messagebox.showinfo("小测验", "回答错误,请再试试。")def show_quiz():question, options = get_random_quiz()current_question.set(question)option_menu['menu'].delete(0, 'end')for option in options:option_menu['menu'].add_command(label=option, command=tk._setit(selected_option, option))current_question = StringVar()selected_option = StringVar()quiz_button = tk.Button(root, text="获取小测验", command=show_quiz)quiz_button.pack(pady=10)option_menu = OptionMenu(root, selected_option, "")option_menu.pack(pady=10)submit_button = tk.Button(root, text="提交答案", command=lambda: check_answer(selected_option.get()))submit_button.pack(pady=10)# 显示窗口root.mainloop()if __name__ == "__main__":show_gui()

代码解释:

  1. 音乐播放:使用 pygame.mixer 播放背景音乐。请确保你在程序目录下有一个名为 national_day_music.mp3 的音乐文件。如果没有音乐文件,可以删除相关的代码行。
  2. 小测验功能:添加了一个小测验功能,用户可以获取随机的测验题目,并选择答案。程序会告诉用户答案是否正确。
  3. 动态更新:用户可以点击按钮获取新的测验题目,选择答案,并提交。
  4. GUI 控件
    • 音乐播放控制:一个按钮用于播放或停止背景音乐。
    • 小测验部分:显示测验题目和选择答案的选项,用户可以选择并提交答案。

注意事项

  • 图片文件:确保图片文件 national_day.png 在程序运行的同一目录下。如果没有图片,可以删除或注释掉相关的代码行。
  • 音乐文件:确保音乐文件 national_day_music.mp3 在程序运行的同一目录下。如果没有音乐文件,可以删除或注释掉相关的代码行。

运行这个程序时,它将展示一个更丰富的界面,包括国庆节的日期、祝福信息、历史背景、相关图片、背景音乐播放控件和小测验功能。

相关文章:

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

功能: 添加互动功能:允许用户选择不同的祝福语或者查询不同的国庆节信息。动态背景音乐:播放国庆节相关的背景音乐。增加节日小测验:提供一些关于国庆节的趣味小测验,让用户参与。增强图形用户界面 (GUI):…...

Anaconda 安装与使用教程

Anaconda 安装与使用教程 介绍 Anaconda 是一个用于科学计算的 Python 和 R 的发行版,它包含了众多流行的科学计算、数据分析、机器学习等领域的库。本教程旨在帮助初学者快速上手 Anaconda,并学会如何使用其管理环境以及安装包。 第一步:…...

时序预测SARIMAX模型

1. 项目背景 本文基于kaggle平台相关竞赛项目,具体连接如下: Time Series Forecasting With SARIMAX 基本信息如内容说明、数据集、已提交代码、当前得分排名以及比赛规则等,如图【1】所示,可以认真阅读。 图 1 2. 数据读取 …...

gin集成jaeger中间件实现链路追踪

1. 背景 新业务线带来新项目启动,需要改进原有项目的基础框架和组件能力,以提升后续开发和维护效率。项目搭建主要包括技术选型、框架搭建、基础服务搭建等。这其中就涉及到链路追踪的内容,结合其中的踩坑情况,用一篇文章来说明完…...

前端层面----监控与埋点

前言: 站在产品的视角,经常会问如下几个问题: 产品有没有用户使用 用户用得怎么样 系统会不会经常出现异常 如何更好地满足用户需求服务用户 当站在技术视角时,经常会问如下几个问题: 系统出现异常的频率如何 异常…...

linux Command

linux Command 1. 系统监控命令 1.1 top top [param] top -H -p pid,查看进程pid下面的子线程。-b以处理模式操作-c显示完整的命令行而不只是显示命令名。-d 屏幕刷新间隔时间。-l 忽略失效过程。-s 保密模式。-S 累积模式。-u 【用户名】 指定用户名。-p 【进程…...

uniapp登录页面( 适配:pc、小程序、h5)

<!-- 简洁登录页面 --> <template><view class"login-bg"><image class"img-a" src"https://zhoukaiwen.com/img/loginImg/2.png"></image><image class"img-b" src"https://zhoukaiwen.com/im…...

关于OceanBase 多模一体化的浅析

在当今多元化的业务生态中&#xff0c;各行各业对数据库系统的需求各有侧重。举例来说&#xff0c;金融风控领域对数据库的高效事务处理&#xff08;TP&#xff09;和分析处理&#xff08;AP&#xff09;能力有着严格要求&#xff1b;游戏行业则更加注重文档数据库的灵活性和性…...

快速git

下载 sudo apt install git配置 $ git config --global user.name "John Doe" $ git config --global user.email johndoeexample.com没有空格可以不加双引号如果~/.ssh没有先创建&#xff08;下一步用&#xff09; ssh方式制作密钥 github解释 #以邮箱作为标签…...

欺诈文本分类检测(十四):GPTQ量化模型

1. 引言 量化的本质&#xff1a;通过将模型参数从高精度&#xff08;例如32位&#xff09;降低到低精度&#xff08;例如8位&#xff09;&#xff0c;来缩小模型体积。 本文将采用一种训练后量化方法GPTQ&#xff0c;对前文已经训练并合并过的模型文件进行量化&#xff0c;通…...

2024.9.14(RC和RS)

一、replicationcontroller &#xff08;RC&#xff09; 1、更改镜像站 [rootk8s-master ~]# vim /etc/docker/daemon.json {"registry-mirrors": ["https://do.nark.eu.org","https://dc.j8.work","https://docker.m.daocloud.io",&…...

【算法随想录04】KMP 字符串匹配算法

这是字符串模式匹配经典算法。 给定一个文本 t 和一个字符串 s&#xff0c;我们尝试找到并展示 s 在 t 中的所有出现&#xff08;occurrence&#xff09;。 #include<bits/stdc.h>using namespace std;vector<int> KMP(string s) {int n s.size();vector<int&g…...

TCP和MQTT通信协议

协议分层 网络分层 协议应用层 Co AP MQTT HTTP传输层 UDP TCP网络层 IP链路层 Enternet 网络分层中最…...

Python Pickle 与 JSON 序列化详解:存储、反序列化与对比

Python Pickle 与 JSON 序列化详解&#xff1a;存储、反序列化与对比 文章目录 Python Pickle 与 JSON 序列化详解&#xff1a;存储、反序列化与对比一 功能总览二 Pickle1 应用2 序列化3 反序列化4 系统资源对象1&#xff09;不能被序列化的系统资源对象2&#xff09;强行序列…...

第二百三十二节 JPA教程 - JPA教程 - JPA ID自动生成器示例、JPA ID生成策略示例

JPA教程 - JPA ID自动生成器示例 我们可以将id字段标记为自动生成的主键列。 数据库将在插入时自动为id字段生成一个值数据到表。 例子 下面的代码来自Person.java。 package cn.w3cschool.common;import javax.persistence.Entity; import javax.persistence.GeneratedValu…...

计算机网络 ---- 计算机网络的体系结构【计算机网络的分层结构】

一、以快递网络来引入分层思想 1.1 “分层” 的设计思想【将庞大而复杂的问题&#xff0c;转化为若干较小的局部问题】 从我们最熟悉的快递网络出发&#xff0c;在你家附近会有一个快递终点站A&#xff0c;在其他的城市&#xff0c;也会有这种快递终点站&#xff0c;比如说快递…...

Vite + Electron 时,Electron 渲染空白,静态资源加载错误等问题解决

问题 如果在 electron 里直接引入 vite 打包后的东西&#xff0c;那么有些资源是请求不到的 这是我的引入方式 根据报错&#xff0c;我们来到 vite 打包后的路径看一看 &#xff0c;修改一下 dist 里的文件路径试了一试 修改后的样子&#xff0c;发现是可以的了 原因分析 …...

ZAB协议(算法)

一、ZAB&#xff08;ZooKeeper Atomic Broadcast&#xff09;介绍 ZAB 即 ZooKeeper Atomic Broadcast&#xff0c;是 ZooKeeper 实现分布式数据一致性的核心算法。它是一种原子广播协议&#xff0c;用于确保在分布式环境中&#xff0c;多个 ZooKeeper 服务器之间的数据一致性。…...

多个音频怎么合并?把多个音频合并在一起的方法推荐

多个音频怎么合并&#xff1f;无论是制作连贯的播客节目还是将音乐片段整合成专辑&#xff0c;音频合并已成为许多创作者的常见需求。通过有效合并音频&#xff0c;可以显著提升项目的整体质量&#xff0c;确保内容的连续性和一致性。然而&#xff0c;合并后的文件通常比原始单…...

【Django】Django Class-Based Views (CBV) 与 DRF APIView 的区别解析

Django Class-Based Views (CBV) 与 DRF APIView 的区别解析 在 Django 开发中&#xff0c;基于类的视图&#xff08;Class-Based Views, CBV&#xff09;是实现可重用性和代码结构化的利器。而 Django REST Framework (DRF) 提供的 APIView 是针对 API 开发的扩展。 一、CBV …...

基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销&#xff0c;平衡网络负载&#xff0c;延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...

在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:

在 HarmonyOS 应用开发中&#xff0c;手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力&#xff0c;既支持点击、长按、拖拽等基础单一手势的精细控制&#xff0c;也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档&#xff0c…...

el-switch文字内置

el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...

如何将联系人从 iPhone 转移到 Android

从 iPhone 换到 Android 手机时&#xff0c;你可能需要保留重要的数据&#xff0c;例如通讯录。好在&#xff0c;将通讯录从 iPhone 转移到 Android 手机非常简单&#xff0c;你可以从本文中学习 6 种可靠的方法&#xff0c;确保随时保持连接&#xff0c;不错过任何信息。 第 1…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍

文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结&#xff1a; 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析&#xff1a; 实际业务去理解体会统一注…...

如何理解 IP 数据报中的 TTL?

目录 前言理解 前言 面试灵魂一问&#xff1a;说说对 IP 数据报中 TTL 的理解&#xff1f;我们都知道&#xff0c;IP 数据报由首部和数据两部分组成&#xff0c;首部又分为两部分&#xff1a;固定部分和可变部分&#xff0c;共占 20 字节&#xff0c;而即将讨论的 TTL 就位于首…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容

目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法&#xff0c;当前调用一个医疗行业的AI识别算法后返回…...

智能AI电话机器人系统的识别能力现状与发展水平

一、引言 随着人工智能技术的飞速发展&#xff0c;AI电话机器人系统已经从简单的自动应答工具演变为具备复杂交互能力的智能助手。这类系统结合了语音识别、自然语言处理、情感计算和机器学习等多项前沿技术&#xff0c;在客户服务、营销推广、信息查询等领域发挥着越来越重要…...

Mysql8 忘记密码重置,以及问题解决

1.使用免密登录 找到配置MySQL文件&#xff0c;我的文件路径是/etc/mysql/my.cnf&#xff0c;有的人的是/etc/mysql/mysql.cnf 在里最后加入 skip-grant-tables重启MySQL服务 service mysql restartShutting down MySQL… SUCCESS! Starting MySQL… SUCCESS! 重启成功 2.登…...

push [特殊字符] present

push &#x1f19a; present 前言present和dismiss特点代码演示 push和pop特点代码演示 前言 在 iOS 开发中&#xff0c;push 和 present 是两种不同的视图控制器切换方式&#xff0c;它们有着显著的区别。 present和dismiss 特点 在当前控制器上方新建视图层级需要手动调用…...