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

embedded/2024/10/21 9:39:33/

功能:

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

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

完整代码示例

python">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 在程序运行的同一目录下。如果没有音乐文件,可以删除或注释掉相关的代码行。

运行这个程序时,它将展示一个更丰富的界面,包括国庆节的日期、祝福信息、历史背景、相关图片、背景音乐播放控件和小测验功能。希望这些改进能让你的程序更加有趣和互动!如果有任何进一步的需求或修改意见,随时告诉我。


http://www.ppmy.cn/embedded/111386.html

相关文章

如何通过OceanBase的多级弹性扩缩容能力应对业务洪峰

每周四晚上的10点,都有近百万的年轻用户进入泡泡玛特的抽盒机小程序,共同参与到抢抽盲盒新品的活动中。瞬间的并发流量激增对抽盒机小程序的系统构成了巨大的挑战,同时也对其数据库的扩容能力也提出了更高的要求。 但泡泡玛特的工程师们一点…

解读:以RTC为基,AI为脑的“超拟人”AI实时互动解决方案

我们打造了一款满足想象与应用的智能体——AI实时互动。 谈谈AI智能体 当AI变得足够聪明时,用户与AI的交互将变得真实自然。于是,构建高拟真AI与用户的实时交互,已经成为企业提升数智化生产力的新思路。 在这个交互过程中,存在一…

Win10安装.net FrameWork3.5失败解决方法

win10安装.net FrameWork3.5失败解决方法 已经好久没有来投稿了,实在最近业务缠身,忙的焦头烂额(呵~多么伟大的牛马) 但最近开发使用windows11实在是拉胯的不行,升级完就后悔,所以就一怒之下,重装了win10 可是,好家伙,我重装完遇到一个问题,就是在使用.Net Framework3.5,按照Mi…

【Go】使用Goland创建第一个Go项目

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

Java后端程序员简单操作Linux系统命令

Linux系统概述 Linux 内核最初是由芬兰人林纳斯托瓦兹(Linus Torvalds)在赫尔辛基大学上 学时而编写的一个开源的操作系统。 Linux(管理计算机硬件资源,任务调度)支持多用户,支持网络,支持多线…

QT学习第五天

#include "widget.h" #include "ui_widget.h" Widget::Widget(QWidget *parent) : QWidget(parent) , ui(new Ui::Widget) , socket(new QTcpSocket(this)) { ui->setupUi(this); //初始化页面 ui->mag_edit->setEnabled(false); ui->send_b…

Serverless 安全新杀器:云安全中心护航容器安全

作者:胡志广(独鳌) 云安全中心对于 Serverless 容器用户的价值 从云计算发展之初,各大云厂商及传统安全厂商就开始围绕云计算的形态来做安全解决方案。传统安全与云计算安全的形态与做法开始发生变化,同时随着这 10 多年的发展,…

python如何加速计算密集型任务2?

问题描述: 在python中,有一个函数,其功能是进行某种计算,需要传入一些参数,计算完成后传回结果,参数是a,b,c,d,分别从列表中取值,返回值是xx,yy,分别是一个列表,调用其一次大概要1s…