基于Python实现一个庆祝国庆节的小程序
功能:
- 添加互动功能:允许用户选择不同的祝福语或者查询不同的国庆节信息。
- 动态背景音乐:播放国庆节相关的背景音乐。
- 增加节日小测验:提供一些关于国庆节的趣味小测验,让用户参与。
- 增强图形用户界面 (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()
代码解释:
- 音乐播放:使用
pygame.mixer
播放背景音乐。请确保你在程序目录下有一个名为national_day_music.mp3
的音乐文件。如果没有音乐文件,可以删除相关的代码行。 - 小测验功能:添加了一个小测验功能,用户可以获取随机的测验题目,并选择答案。程序会告诉用户答案是否正确。
- 动态更新:用户可以点击按钮获取新的测验题目,选择答案,并提交。
- 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 多模一体化的浅析
在当今多元化的业务生态中,各行各业对数据库系统的需求各有侧重。举例来说,金融风控领域对数据库的高效事务处理(TP)和分析处理(AP)能力有着严格要求;游戏行业则更加注重文档数据库的灵活性和性…...

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

欺诈文本分类检测(十四):GPTQ量化模型
1. 引言 量化的本质:通过将模型参数从高精度(例如32位)降低到低精度(例如8位),来缩小模型体积。 本文将采用一种训练后量化方法GPTQ,对前文已经训练并合并过的模型文件进行量化,通…...

2024.9.14(RC和RS)
一、replicationcontroller (RC) 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,我们尝试找到并展示 s 在 t 中的所有出现(occurrence)。 #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 序列化详解:存储、反序列化与对比 文章目录 Python Pickle 与 JSON 序列化详解:存储、反序列化与对比一 功能总览二 Pickle1 应用2 序列化3 反序列化4 系统资源对象1)不能被序列化的系统资源对象2)强行序列…...

第二百三十二节 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 “分层” 的设计思想【将庞大而复杂的问题,转化为若干较小的局部问题】 从我们最熟悉的快递网络出发,在你家附近会有一个快递终点站A,在其他的城市,也会有这种快递终点站,比如说快递…...

Vite + Electron 时,Electron 渲染空白,静态资源加载错误等问题解决
问题 如果在 electron 里直接引入 vite 打包后的东西,那么有些资源是请求不到的 这是我的引入方式 根据报错,我们来到 vite 打包后的路径看一看 ,修改一下 dist 里的文件路径试了一试 修改后的样子,发现是可以的了 原因分析 …...

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

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

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

如何增加Google收录量?
想增加Google收录量,首先自然是你的页面数量就要多,但这些页面的内容也绝对不能敷衍,你的网站都没多少页面,谷歌哪怕想收录都没办法,当然,这是一个过程,持续缓慢的增加页面,增加网站…...

leetcode练习 格雷编码
n 位格雷码序列 是一个由 2n 个整数组成的序列,其中: 每个整数都在范围 [0, 2n - 1] 内(含 0 和 2n - 1)第一个整数是 0一个整数在序列中出现 不超过一次每对 相邻 整数的二进制表示 恰好一位不同 ,且第一个 和 最后一…...

【LLM:Gemini】文本摘要、信息提取、验证和纠错、重新排列图表、视频理解、图像理解、模态组合
开始使用Gemini 目录 开始使用Gemini Gemini简介 Gemini实验结果 Gemini的多模态推理能力 文本摘要 信息提取 验证和纠错 重新排列图表 视频理解 图像理解 模态组合 Gemini多面手编程助理 库的使用 引用 本文概述了Gemini模型和如何有效地提示和使用这些模型。本…...

CMS之Wordpress建设
下载 https://cn.wordpress.org/ 宝塔安装Wordpress 创建网站 上传文件、并解压、剪切文件到项目根目录 安装 -> 数据库信息 -> 标题信息 http://wordpress.xxxxx.com 登录 http://wordpress.xxxxxxxxx.com/wp-admin/ 1. 主题(模板) wordpress-基本使用-02-在主题…...

使用Neo4j存储聊天记录的简单教程
引言 在当今的数据驱动世界中,关系型数据库有时难以处理复杂的、相互关联的数据集。Neo4j作为一款开源图数据库,以其高效管理高连接数据的能力而广受欢迎。本篇文章将详细介绍如何使用Neo4j来存储聊天信息历史,引导您在实际项目中利用其强大…...

前端面试常考算法
快速排序 #include<iostream> #include<cstdio> using namespace std; const int N 100005; int a[N];void quick_sort(int a[], int l, int r) {if (l > r) return;int x a[l r >> 1];int i l - 1, j r 1;while (i < j) {while (a[i] < x);…...

【机试准备】常用容器与函数
Vector详解 原文链接:【超详细】C vector 详解 例题,这一篇就够了-CSDN博客 向量(Vector)是一个封装了动态大小数组的顺序容器(Sequence Container)。跟任意其它类型容器一样,它能够存放各种…...

Base 社区见面会 | 新加坡站
活动信息 备受期待的 Base 社区见面会将于 Token2049 期间在新加坡举行,为 Base 爱好者和生态系统建设者提供一个独特的交流机会。本次活动由 DAOBase 组织,Base 和 Coinbase 提供支持,并得到了以下合作伙伴的大力支持: The Sand…...

麒麟操作系统搭建Nacos集群
Nacos 集群搭建 2.4.2 环境介绍 操作系统Kylin Linux Advanced Server V10 (Lance)Kylin Linux Advanced Server V10 (Lance)Kylin Linux Advanced Server V10 (Lance)内核版本Linux 4.19.90-52.22.v2207.ky10.aarch64Linux 4.19.90-52.22.v2207.ky10.aarch64Linux 4.19.90-52…...

Imagination推出性能最高且具有高等级功能安全性的汽车GPU IP
Imagination DXS GPU 进一步扩大其在汽车领域的领先地位 产品亮点 : 峰值性能比 Imagination 上一代汽车 GPU 提高了 50%,可扩展至 192GPixel/s、6 TFLOPS 和 24TOPS计算工作负载的性能提升多达十倍引入创新的分布式功能安全机制,以最小的…...