以下是一个简单的Python抽奖模拟器,使用tkinter GUI库进行构建,共计100多行代码,并附有注释说明。注意,本代码仅供参考,可能存在一些不完善的地方,如有需要请自行修改。

import tkinter as tk
import random

class LotterySimulator:
    def __init__(self, master):
        self.master = master
        master.title("抽奖模拟器")

        self.label = tk.Label(master, text="奖项列表:")
        self.label.pack()

        self.prize_list = tk.Listbox(master, width=50)
        self.prize_list.pack()

        self.add_button = tk.Button(master, text="添加奖项", command=self.add_prize)
        self.add_button.pack()

        self.delete_button = tk.Button(master, text="删除奖项", command=self.delete_prize)
        self.delete_button.pack()

        self.start_button = tk.Button(master, text="开始抽奖", command=self.start_lottery)
        self.start_button.pack()

        self.result_label = tk.Label(master, text="")
        self.result_label.pack()

        self.quit_button = tk.Button(master, text="退出", command=master.quit)
        self.quit_button.pack()

        self.prize_pool = [] # 奖项池

    def add_prize(self):
        prize = tk.simpledialog.askstring("添加奖项", "请输入奖项名称:")
        if prize:
            self.prize_pool.append(prize)
            self.prize_list.insert(tk.END, prize)

    def delete_prize(self):
        selected = self.prize_list.curselection()
        if selected:
            self.prize_list.delete(selected)
            self.prize_pool.pop(selected[0])

    def start_lottery(self):
        if not self.prize_pool:
            tk.messagebox.showwarning("错误", "奖项列表为空!")
            return

        self.result_label.config(text="正在抽奖,请稍候...")
        self.master.update() # 更新GUI

        winner = random.choice(self.prize_pool) # 随机抽取一个奖项
        self.result_label.config(text="恭喜获得 %s!" % winner)

if __name__ == "__main__":
    root = tk.Tk()
    app = LotterySimulator(root)
    root.mainloop()

首先,我们导入了tkinter库以及random库。在LotterySimulator类中,我们定义了一些GUI元素,包括奖项列表、添加/删除奖项按钮、开始抽奖按钮以及结果标签。我们还定义了一个prize_pool列表,用于存储所有的奖项。

在add_prize方法中,我们使用simpledialog库弹出一个输入框,让用户输入奖项名称。如果用户输入了名称,我们就将它添加到prize_pool列表中,并在奖项列表框架中插入一个新的项目。

在delete_prize方法中,我们首先获取当前所选项目的索引,然后从奖项列表和prize_pool列表中删除它。

在start_lottery方法中,我们首先检查prize_pool列表是否为空。如果是,我们会弹出一个警告对话框,并返回。否则,我们将结果标签的文本设置为“正在抽奖,请稍候...”,并使用update方法更新GUI。然后,我们使用random库中的choice方法随机选择一个奖项,并将结果标签的文本设置为“恭喜获得 xxxx!”,其中xxxx是所选奖项的名称。

最后,在__main__函数中,我们创建了一个tkinter窗口,并将其传递给LotterySimulator类的构造函数。然后,我们调用root.mainloop()方法以启动应用程序的主事件循环


原文地址: https://www.cveoy.top/t/topic/fkMt 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录