1111111

import tkinter as tk
import random
import threading
from PIL import ImageTk, Image

class LotteryApp:
def __init__(self):
self.window = tk.Tk()
self.window.title("晚会摇奖系统")
self.window.geometry("800x600")
self.window.configure(bg='#FF4040') # 红色背景
 
# 初始化数据
self.participants = ["张三", "李四", "王五", "赵六", "孙七", "周八", "吴九", "郑十"]
self.prizes = {
"一等奖": 1,
"二等奖": 3,
"三等奖": 5
}
self.current_prize = None
self.running = False
 
# 加载装饰图片
try:
self.deco_img = ImageTk.PhotoImage(Image.open("pig.png").resize((100,100)))
tk.Label(self.window, image=self.deco_img, bg='#FF4040').pack(pady=10)
except:
pass
 
# 创建界面组件
self.create_widgets()
 
def create_widgets(self):
# 状态显示
self.status_label = tk.Label(self.window, text="等待摇奖开始",
font=("微软雅黑", 24), bg='#FF4040', fg='white')
self.status_label.pack(pady=20)
 
# 结果显示
self.result_label = tk.Label(self.window, text="",
font=("微软雅黑", 32, "bold"), bg='#FF4040', fg='yellow')
self.result_label.pack(pady=30)
 
# 按钮面板
btn_frame = tk.Frame(self.window, bg='#FF4040')
btn_frame.pack(pady=20)
 
self.start_btn = tk.Button(btn_frame, text="开始摇奖", width=15, height=2,
font=("微软雅黑", 14), command=self.start_lottery)
self.start_btn.pack(side=tk.LEFT, padx=10)
 
self.stop_btn = tk.Button(btn_frame, text="停止摇奖", width=15, height=2,
font=("微软雅黑", 14), state=tk.DISABLED,
command=self.stop_lottery)
self.stop_btn.pack(side=tk.LEFT, padx=10)
 
self.reset_btn = tk.Button(btn_frame, text="重置系统", width=15, height=2,
font=("微软雅黑", 14), command=self.reset_system)
self.reset_btn.pack(side=tk.LEFT, padx=10)
 
def start_lottery(self):
if not self.participants:
self.status_label.config(text="所有奖品已抽取完毕!")
return
 
self.running = True
self.start_btn.config(state=tk.DISABLED)
self.stop_btn.config(state=tk.NORMAL)
self.current_prize = next((p for p in self.prizes if self.prizes[p] > 0), None)
 
if not self.current_prize:
self.status_label.config(text="所有奖项已抽完!")
return
 
threading.Thread(target=self.run_lottery, daemon=True).start()
 
def run_lottery(self):
while self.running and self.prizes[self.current_prize] > 0:
winner = random.choice(self.participants)
self.window.after(100, self.update_display, winner)
 
if not self.running and winner:
self.finalize_prize(winner)
 
def update_display(self, name):
self.result_label.config(text=name)
 
def finalize_prize(self, winner):
self.participants.remove(winner)
self.prizes[self.current_prize] -= 1
self.status_label.config(text=f"恭喜 {winner} 获得 {self.current_prize}!")
self.result_label.config(text=winner)
 
def stop_lottery(self):
self.running = False
self.start_btn.config(state=tk.NORMAL)
self.stop_btn.config(state=tk.DISABLED)
 
def reset_system(self):
self.participants = ["周大勇", "王波", "王杳寒", "张峰凡", "王立群", "高飞", "沈柯帆"]
self.prizes = {"一等奖": 1, "二等奖": 3, "三等奖": 5}
self.status_label.config(text="系统已重置")
self.result_label.config(text="")
self.stop_btn.config(state=tk.DISABLED)
self.start_btn.config(state=tk.NORMAL)
 
def run(self):
self.window.mainloop()

if __name__ == "__main__":
app = LotteryApp()
app.run()
posted on 2025-03-07 15:10  Kinglangsijun  阅读(23)  评论(0)    收藏  举报