Python Tkinter 抽奖模拟器:100 行代码实现简单抽奖程序
以下是一个简单的 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() 方法以启动应用程序的主事件循环。
原文地址: https://www.cveoy.top/t/topic/obGu 著作权归作者所有。请勿转载和采集!