首頁 > 軟體

Python+Tkinter製作猜燈謎小遊戲

2022-02-16 10:01:07

導語

元宵節,又稱上元節、燈節,是春節之後的第一個重要節日。

相傳,漢文帝(前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()

到此這篇關於Python+Tkinter製作猜燈謎小遊戲的文章就介紹到這了,更多相關Python Tkinter猜燈謎內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com