Python+Tkinter制作猜燈謎小游戲
導(dǎo)語

元宵節(jié),又稱上元節(jié)、燈節(jié),是春節(jié)之后的第一個重要節(jié)日。
相傳,漢文帝(前179—前157年)為慶祝周勃于正月十五勘平諸呂之亂,每逢此夜,必出宮游玩,與民同樂,在古代,夜同宵,正月又稱元月,漢文帝就將正月十五定為元宵節(jié)。
隨著社會和時代的變遷,元宵節(jié)的風(fēng)俗習(xí)慣在不斷變化,但至今仍是中國的傳統(tǒng)節(jié)日。2008年,元宵節(jié)選入第二批國家級非物質(zhì)文化遺產(chǎn)。
對我而言,除了吃元宵、看花燈……還有一件最重要的事情…就是…
猜燈謎!猜燈謎??!猜燈謎!??!猜謎事小,展現(xiàn)聰明才智事大哈哈哈.jpg 開個小玩笑啦~
今天小編就給大家寫一款猜燈謎的小游戲一起嗨皮叭~

正文
“猜燈謎”是我國元宵節(jié)的一項特色活動,最早是由謎語發(fā)展而來。謎語懸之于燈,供人猜射,始于南宋。因為謎語能啟迪智慧又饒有興趣,所以深受社會各階層歡迎。值此佳節(jié),小編也來湊個熱鬧,出幾個燈謎,給您助助興!看看您能猜出幾個?
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)) # 加載圖片并調(diào)整大小至窗口大小
pic = ImageTk.PhotoImage(pic1)
render = tk.Label(self.root, image=pic, compound=tk.CENTER, justify=tk.LEFT)
render.place(x=0, y=0)
# 標(biāo)簽 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) # 設(shè)置輸入框,輸入答案
# 按鈕
confirm_button = tk.Button(self.root, text='確認(rèn)', 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()
到此這篇關(guān)于Python+Tkinter制作猜燈謎小游戲的文章就介紹到這了,更多相關(guān)Python Tkinter猜燈謎內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
淺談Python里面None True False之間的區(qū)別
這篇文章主要介紹了淺談Python里面None True False之間的區(qū)別,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-07-07
使用Python和scikit-learn創(chuàng)建混淆矩陣的示例詳解
這篇文章主要介紹了使用Python和scikit-learn創(chuàng)建混淆矩陣的示例詳解,該示例包括生成數(shù)據(jù)集、為數(shù)據(jù)集選擇合適的機器學(xué)習(xí)模型、構(gòu)建、配置和訓(xùn)練它,最后解釋結(jié)果,即混淆矩陣,需要的朋友可以參考下2022-06-06
Python中eval函數(shù)的表達(dá)式作用示例
這篇文章主要介紹了Python中eval函數(shù)的表達(dá)式用法示例,文中通過示例對比來為大家進(jìn)行詳細(xì)的講解,有需要的朋友可以借鑒參下,希望有所幫助2021-09-09
Python實現(xiàn)個人微信號自動監(jiān)控告警的示例
今天小編就為大家分享一篇Python實現(xiàn)個人微信號自動監(jiān)控告警的示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-07-07
python GUI庫圖形界面開發(fā)之PyQt5輸入對話框QInputDialog詳細(xì)使用方法與實例
這篇文章主要介紹了python GUI庫圖形界面開發(fā)之PyQt5輸入對話框QInputDialog詳細(xì)使用方法與實例,需要的朋友可以參考下2020-02-02

