帮我用python实现一个抽奖 1、图形化 2、上传抽奖人员名单
时间: 2024-01-27 19:05:27 浏览: 46
以下是一个简单的抽奖程序,可以从文件中读取抽奖人员名单,并在界面上显示中奖名单和奖品。需要安装 tkinter 和 Pillow 库。
```python
import tkinter as tk
from PIL import Image, ImageTk
import random
class LotteryApp:
def __init__(self, master):
self.master = master
self.master.title("抽奖程序")
self.master.geometry("400x400")
# 奖项设置
self.prizes = [
{"name": "一等奖", "count": 1},
{"name": "二等奖", "count": 2},
{"name": "三等奖", "count": 3},
]
# 读取名单
self.names = []
with open("names.txt", encoding="utf-8") as f:
for line in f:
self.names.append(line.strip())
# 控件布局
self.canvas = tk.Canvas(self.master, width=400, height=300)
self.canvas.pack()
self.button = tk.Button(self.master, text="开始抽奖", command=self.draw_lottery)
self.button.pack()
self.prize_label = tk.Label(self.master, text="奖项:")
self.prize_label.place(x=50, y=320)
self.name_label = tk.Label(self.master, text="中奖名单:")
self.name_label.place(x=50, y=350)
# 图片加载
image = Image.open("background.png")
self.bg_image = ImageTk.PhotoImage(image)
self.canvas.create_image(0, 0, anchor=tk.NW, image=self.bg_image)
def draw_lottery(self):
# 检查是否还有奖品
if not self.prizes:
self.button.config(state=tk.DISABLED)
return
# 随机抽奖
prize = random.choice(self.prizes)
name = random.choice(self.names)
# 更新界面
self.prize_label.config(text=f"奖项:{prize['name']}")
self.name_label.config(text=f"中奖名单:{name}")
# 奖品数量减一
prize["count"] -= 1
if prize["count"] == 0:
self.prizes.remove(prize)
root = tk.Tk()
app = LotteryApp(root)
root.mainloop()
```
该程序需要在同一目录下放置以下文件:
- `names.txt`:抽奖人员名单,每行一个名字。
- `background.png`:界面背景图片。
运行程序后,点击“开始抽奖”按钮即可进行抽奖,界面会显示当前抽中的奖项和中奖名单。每个奖项可以设置数量,当数量为零时,该奖项将不能再抽取。所有奖品抽完后,按钮将被禁用。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)