模式一说明文档
- 添加奖品
输入奖品名称和奖品个数,生成奖池
def addPrize(self):
try:
if self.inputName.get() != None and self.inputName.get() != '':
if self.inputChance.get()!= '' and isinstance(int(self.inputChance.get()), int):
self.Chance = int(self.inputChance.get())
self.Name = self.inputName.get()
self.weight[self.Name] = self.Chance
self.setWeight(self.weight)
self.weight = {}
self.messagebox.showinfo('SUCCESS', '添加奖品成功!')
self.inputName.delete(first=0, last='end')
self.inputChance.delete(first=0, last='end')
else:
self.messagebox.showwarning('ERROR', '请输入一个整数!')
else:
self.messagebox.showwarning('ERROR', '请输入奖品名称!')
except Exception as e:
self.messagebox.showwarning(e)
- 查询奖品
查询奖池中剩下的奖品名称及其个数
def checkPrize(self):
if (len(self.chanceList) <= 0):
self.messagebox.showinfo('ERROR', '没有奖品了')
else:
store = {}
for tmp in self.chanceList:
if store.get(tmp)!=None:
store[tmp] += 1
else :
store[tmp] = 1
message = ''
for k, v in store.items():
message += k + '剩余 : ' + str(v)+ '个'+'\n'
self.messagebox.showinfo('查询结果', message)
- ui界面设计
用户可以在此界面输入奖品名称以及奖品个数,将奖品添加入奖池,查询奖池情况以及开奖
def graphicsUI(self):
self.window = self.tk.Tk(className='抽奖') # 窗口
self.nameTitle = self.tk.Label()
self.nameTitle["text"] = "在此输入奖品名称"
self.nameTitle.pack()
self.inputName = self.tk.Entry()
self.inputName.pack()
self.chanceTitle = self.tk.Label()
self.chanceTitle["text"] = "在此输入奖品个数"
self.chanceTitle.pack()
self.inputChance = self.tk.Entry()
self.inputChance.pack()
self.addButton = self.tk.Button()
self.addButton["text"] = '添加'
self.addButton["command"] = self.addPrize
self.addButton.pack(side='left', padx=30)
self.checkButton = self.tk.Button()
self.checkButton["text"] = '查询剩余奖品'
self.checkButton["command"] = self.checkPrize
self.checkButton.pack(side='left')
self.drawButton = self.tk.Button()
self.drawButton["text"] = '开奖'
self.drawButton["command"] = self.drawing
self.drawButton.pack(side='right', padx=30)
self.window.mainloop()
完整代码:
# 抽奖一次少一个名额
class randomMachine(object):
import random as rd
import tkinter as tk
from tkinter import messagebox
def setWeight(self, weight):
for k, v in weight.items():
for t in range(v):
self.chanceList.append(k)
def drawing(self):
if (len(self.chanceList) <= 0):
self.messagebox.showwarning('ERROR', '奖品数不够')
else:
r = self.rd.randrange(0, len(self.chanceList)) # 随机数
# print("随机数 : ", r)
self.rd.shuffle(self.chanceList) # 打乱列表
res = self.chanceList.pop(r)
self.messagebox.showinfo('开奖结果', res)
print(res)
def addPrize(self):
try:
if self.inputName.get() != None and self.inputName.get() != '':
if self.inputChance.get()!= '' and isinstance(int(self.inputChance.get()), int):
self.Chance = int(self.inputChance.get())
self.Name = self.inputName.get()
self.weight[self.Name] = self.Chance
self.setWeight(self.weight)
self.weight = {}
self.messagebox.showinfo('SUCCESS', '添加奖品成功!')
self.inputName.delete(first=0, last='end')
self.inputChance.delete(first=0, last='end')
else:
self.messagebox.showwarning('ERROR', '请输入一个整数!')
else:
self.messagebox.showwarning('ERROR', '请输入奖品名称!')
except Exception as e:
self.messagebox.showwarning(e)
def checkPrize(self):
if (len(self.chanceList) <= 0):
self.messagebox.showinfo('ERROR', '没有奖品了')
else:
store = {}
for tmp in self.chanceList:
if store.get(tmp)!=None:
store[tmp] += 1
else :
store[tmp] = 1
message = ''
for k, v in store.items():
message += k + '剩余 : ' + str(v)+ '个'+'\n'
self.messagebox.showinfo('查询结果', message)
def graphicsUI(self):
self.window = self.tk.Tk(className='抽奖') # 窗口
self.nameTitle = self.tk.Label()
self.nameTitle["text"] = "在此输入奖品名称"
self.nameTitle.pack()
self.inputName = self.tk.Entry()
self.inputName.pack()
self.chanceTitle = self.tk.Label()
self.chanceTitle["text"] = "在此输入奖品个数"
self.chanceTitle.pack()
self.inputChance = self.tk.Entry()
self.inputChance.pack()
self.addButton = self.tk.Button()
self.addButton["text"] = '添加'
self.addButton["command"] = self.addPrize
self.addButton.pack(side='left', padx=30)
self.checkButton = self.tk.Button()
self.checkButton["text"] = '查询剩余奖品'
self.checkButton["command"] = self.checkPrize
self.checkButton.pack(side='left')
self.drawButton = self.tk.Button()
self.drawButton["text"] = '开奖'
self.drawButton["command"] = self.drawing
self.drawButton.pack(side='right', padx=30)
self.window.mainloop()
def __init__(self):
self.weight = {}
self.chanceList = []
if __name__ == "__main__":
test = randomMachine()
test.graphicsUI()
总结:
我们的代码实现的功能点包括:用户设置奖池参数、生成奖池、生成抽奖结果、用户查询抽奖结果,用户查询奖池状况。
界面简洁明了、易上手,可以根据设置的参数模拟抽奖结果并实时查询卡池,但目前产品功能仍然较为单一,期待日后新功能的加入。