以下是一个简单的 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='恭喜获得 ' + 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() 方法以启动应用程序的主事件循环。

Python Tkinter 抽奖模拟器:100 行代码实现简单抽奖程序

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

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