当前位置: 首页 > 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 …...

TDengine 快速体验(Docker 镜像方式)

简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能&#xff0c;本节首先介绍如何通过 Docker 快速体验 TDengine&#xff0c;然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker&#xff0c;请使用 安装包的方式快…...

【Linux】shell脚本忽略错误继续执行

在 shell 脚本中&#xff0c;可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行&#xff0c;可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令&#xff0c;并忽略错误 rm somefile…...

React第五十七节 Router中RouterProvider使用详解及注意事项

前言 在 React Router v6.4 中&#xff0c;RouterProvider 是一个核心组件&#xff0c;用于提供基于数据路由&#xff08;data routers&#xff09;的新型路由方案。 它替代了传统的 <BrowserRouter>&#xff0c;支持更强大的数据加载和操作功能&#xff08;如 loader 和…...

电脑插入多块移动硬盘后经常出现卡顿和蓝屏

当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时&#xff0c;可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案&#xff1a; 1. 检查电源供电问题 问题原因&#xff1a;多块移动硬盘同时运行可能导致USB接口供电不足&#x…...

现代密码学 | 椭圆曲线密码学—附py代码

Elliptic Curve Cryptography 椭圆曲线密码学&#xff08;ECC&#xff09;是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础&#xff0c;例如椭圆曲线数字签…...

零基础设计模式——行为型模式 - 责任链模式

第四部分&#xff1a;行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习&#xff01;行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想&#xff1a;使多个对象都有机会处…...

JavaScript基础-API 和 Web API

在学习JavaScript的过程中&#xff0c;理解API&#xff08;应用程序接口&#xff09;和Web API的概念及其应用是非常重要的。这些工具极大地扩展了JavaScript的功能&#xff0c;使得开发者能够创建出功能丰富、交互性强的Web应用程序。本文将深入探讨JavaScript中的API与Web AP…...

力扣热题100 k个一组反转链表题解

题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...

全面解析数据库:从基础概念到前沿应用​

在数字化时代&#xff0c;数据已成为企业和社会发展的核心资产&#xff0c;而数据库作为存储、管理和处理数据的关键工具&#xff0c;在各个领域发挥着举足轻重的作用。从电商平台的商品信息管理&#xff0c;到社交网络的用户数据存储&#xff0c;再到金融行业的交易记录处理&a…...

针对药品仓库的效期管理问题,如何利用WMS系统“破局”

案例&#xff1a; 某医药分销企业&#xff0c;主要经营各类药品的批发与零售。由于药品的特殊性&#xff0c;效期管理至关重要&#xff0c;但该企业一直面临效期问题的困扰。在未使用WMS系统之前&#xff0c;其药品入库、存储、出库等环节的效期管理主要依赖人工记录与检查。库…...