Python+Tkinter制作猜灯谜小游戏
作者:顾木子吖 发布时间:2021-09-24 19:43:17
标签:Python,Tkinter,猜灯谜
导语
元宵节,又称上元节、灯节,是春节之后的第一个重要节日。
相传,汉文帝(前179—前157年)为庆祝周勃于正月十五勘平诸吕之乱,每逢此夜,必出宫游玩,与民同乐,在古代,夜同宵,正月又称元月,汉文帝就将正月十五定为元宵节。
随着社会和时代的变迁,元宵节的风俗习惯在不断变化,但至今仍是中国的传统节日。2008年,元宵节选入第二批国家级非物质文化遗产。
对我而言,除了吃元宵、看花灯……还有一件最重要的事情…就是…
猜灯谜!猜灯谜!!猜灯谜!!!猜谜事小,展现聪明才智事大哈哈哈.jpg 开个小玩笑啦~
今天小编就给大家写一款猜灯谜的小游戏一起嗨皮叭~
“猜灯谜”是我国元宵节的一项特色活动,最早是由谜语发展而来。谜语悬之于灯,供人猜射,始于南宋。因为谜语能启迪智慧又饶有兴趣,所以深受社会各阶层欢迎。值此佳节,小编也来凑个热闹,出几个灯谜,给您助助兴!看看您能猜出几个?
1)效果展示
猜灯谜界面——
提醒功能——
回答正确——
2)主程序
from tkinter import messagebox
from PIL import Image, ImageTk
import random
import csv
import tkinter as tk
class LanternRiddles(object):
def __init__(self):
self.root = tk.Tk()
self.root.title("猜灯谜闹元宵")
self.root.geometry("1200x500")
self.root.geometry("+100+150")
self.data = []
with open('new_data.csv', 'r') as f:
reader = csv.reader(f)
for row in reader:
self.data.append(row)
self.index = [i for i in range(len(self.data))]
random.shuffle(self.index)
# 做成背景的装饰
pic1 = Image.open('pic/bg.jpg').resize((1200, 500)) # 加载图片并调整大小至窗口大小
pic = ImageTk.PhotoImage(pic1)
render = tk.Label(self.root, image=pic, compound=tk.CENTER, justify=tk.LEFT)
render.place(x=0, y=0)
# 标签 and 输入框
label = tk.Label(self.root, text='输入答案', font=('微软雅黑', 15), fg='black', bg="Magenta")
label.place(x=0, y=10, width=100, height=40)
self.entry = tk.Entry(self.root, font=('宋体', 15), width=15, bg="GhostWhite")
self.entry.place(x=110, y=10, width=150, height=40) # 设置输入框,输入答案
# 按钮
confirm_button = tk.Button(self.root, text='确认', font=('微软雅黑', 15), bg="LightGreen", command=self.check)
confirm_button.place(x=270, y=10, width=100, height=40) # 确定按钮
quit_button = tk.Button(self.root, text='退出软件', font=('微软雅黑', 15), bg="LightGreen", command=self.quit)
quit_button.place(x=800, y=10, width=100, height=40) # 退出软件
start_button = tk.Button(self.root, text='开始答题', font=('微软雅黑', 15), bg="LightGreen", command=self.get_next)
start_button.place(x=0, y=80, width=100, height=40) # 更换题目
prompt_button = tk.Button(self.root, text='显示提示', font=('微软雅黑', 15), bg="LightGreen", command=self.show_prompt)
prompt_button.place(x=650, y=10, width=100, height=40) # 更换题目
self.riddle = tk.Text(self.root, bg="OrangeRed", fg="dimgray", font=('微软雅黑', 15))
self.riddle.place(x=200, y=180, width=300, height=160) # 显示题目
self.root.mainloop()
def get_next(self): # 更换题目
self.riddle.delete('1.0', 'end') # 清空显示
index = random.choice(self.index)
self.index.remove(index)
self.question = self.data[index][0]
self.answer = self.data[index][1]
self.prompt = self.data[index][2]
self.riddle.insert(tk.END, self.question)
def check(self): # 验证答案
reply = self.entry.get()
if reply in self.answer:
messagebox.showinfo('提示', '回答正确')
self.get_next()
self.entry.delete(0, tk.END)
else:
messagebox.showinfo('提示', '回答错误,请重试')
self.entry.delete(0, tk.END)
def show_prompt(self): # 显示提示
messagebox.showinfo('提示', self.prompt)
def quit(self):
self.root.destroy()
if __name__ == '__main__':
LanternRiddles()
来源:https://blog.csdn.net/weixin_55822277/article/details/122948943
0
投稿
猜你喜欢
- Session 对象 可以使用 Session 对象存储特定用户会话所需的信息。这样,当用户在应用程序的 Web 页之间跳转时,存储在 Se
- javascript作为一个动态语言,动态解析脚本的方法非常多,如万恶又万能的eval,低调的Function,IE独占的execScrip
- 现在jquery应用的越来越多, 有些同学在享受爽快淋漓coding时就将性能问题忽略了, 比如我. jquery虽
- 好东西找起来很麻烦,好用的又不太容易找到,之前看到很多用JS写的,固定漂浮这种效果拖动时难免会产生抖动,自己对CSS还是蛮有好感的,找来找去
- HTTP_X_FORWARDED_FOR与REMOTE_ADDR的区别.在Request.ServerVariables中并没有HTTP_X
- GOPATH设置go 命令依赖一个重要的环境变量:$GOPATH1(注:这个不是Go安装目录。下面以笔者的工作目录为说明,请替换自己机器上的
- 近日,有关微软Open XML标准的问题又引发了某些业内人士的关注。其一是因为日前ISO(国际标准组织)成员南非和巴西相继就ISO批准微软的
- Web Accessibility Initiative Accessible Rich Internet Applications认识AR
- 最近,我面试了一个有五年 Web 应用程序开发经验的软件开发人员。四年半来她一直在从事 JavaScript 相关的工作,她自认为 Java
- 方法一:进入MYSQL安装目录 打开MYSQL配置文件 my.ini 或 my.cnf查找 max_connections=100 修改为
- 1. Document.form.item 问题 现有问题:  
- 内容摘要:统计在线人数的方法很多,可以使用Application来统计在线人数,也可以使用IP来统计在线人数。各有优点。本文介绍了通过判断S
- 如何使用ADO 2x Command 对象读取数据?具体的读数据代码如下:Cmd = CType(EC.Example1
- 有2个不同的方法增加用户:通过使用GRANT语句或通过直接操作MySQL授权表。比较好的方法是使用GRANT语句,因为他们是更简明并且好像错
- 校验是否全由数字组成function isDigit(s) { var patrn=/^[0-9]{1,20}$/; if (!patrn.
- 在 Go 语言中,map 是一种非常常见的数据类型,它可以用于快速地检索数据。Go 语言中的 map 与其他编程语言中的类似的数据类型相比,
- MaxDB和MySQL是独立的数据库管理服务器。系统间的协同性是可能的,通过相应的方式,系统能够彼此交换数据。要想在MaxDB和MySQL之
- 前言本文主要给大家介绍了关于python用MethodType绑定方法到类的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细
- 昨天晚上才发现已经出了jQuery的1.3版本,于是下载下来,把原来一个兄弟翻译的1.2.6的文档移植到了1.3中,点击这里可
- <div id="outer" style="background:#099"> cli