tkinter 实现 幸运大抽奖

tkinter 之 幸运大抽奖

from tkinter import *
import random
import threading
import os

path = os.path.dirname(os.path.abspath(file))

class Prize:
def init(self):
# 定义常量
self.people = list(range(1, 86))
self.winner1 = list()
self.winner2 = list()
self.winner3 = list()
self.winner4 = list()

    # 初始化窗口
    self.root = Tk()
    self.root.geometry('1920x1080')
    self.root.title("幸运大抽奖")

    # 获取输入框内容
    self.e = Entry(self.root)
    self.e.pack(side="top")
    self.e.insert(0, "请输入")

    # 初始化画布背景
    self.canvas = Canvas(self.root, width=1920, height=1080, bg="red")
    self.im = PhotoImage(file="test1.png")
    self.canvas.create_image(0, 0, anchor=NW, image=self.im)
    self.canvas.pack()

    # 初始化按钮
    self.first = Label(self.root, text='', font=("Arial", 160, "normal"), bg="pink", width=200, height=200)
    self.first.place(x=765, y=445, width=375, height=375)

    # 奖品展示
    self.o = Label(self.root, text='一等奖:华为手机,价值6600', font=("Arial", 18), bg="yellow")
    self.o.place(x=200, y=500)

    self.b = Label(self.root, text='二等奖:戴森吸尘器or卷发棒,价值3700', font=("Arial", 18), bg="yellow")
    self.b.place(x=200, y=540)

    self.c = Label(self.root, text='三等奖:马歇尔蓝牙音响orBose降噪蓝牙耳机,价值2000', font=("Arial", 18), bg="yellow",
                   anchor="nw", justify="left", wraplength=450)
    self.c.place(x=200, y=580)

    self.d = Label(self.root, text='佛系随缘奖:电影票,价值80', font=("Arial", 18), bg="yellow")
    self.d.place(x=200, y=650)

    self.cute1 = Label(self.root, text="一等奖(1)<华为mate20>:", bg="red", font=("Arial", 14))
    self.cute1.place(x=1350, y=600)

    self.cute2 = Label(self.root, text="二等奖(2)<戴森系列卷发棒or吸尘器>:", bg="red", font=("Arial", 14))
    self.cute2.place(x=1350, y=650)

    self.cute3 = Label(self.root, text="三等奖(3)<马歇尔蓝牙音箱orBose蓝牙耳机>:", bg="red", font=("Arial", 14))
    self.cute3.place(x=1350, y=700)

    self.cute4 = Label(self.root, text="参与奖(10)<电影票>:", bg="red", font=("Arial", 14), anchor="nw", justify="left",
                       wraplength=450)
    self.cute4.pack()
    self.cute4.place(x=1350, y=750)

    self.b0 = Button(self.root, command=self.del_num, width=30, height=30, text="del",
                     font=("Arial", 28), bg="red")
    self.b0.place(x=1840, y=60, width=80, height=80)

    self.buttonStart = Button(self.root, command=self.button_start_click, width=30, height=30, text="start",
                              font=("Arial", 28), bg="red")
    self.buttonStart.place(x=1600, y=60, width=80, height=80)

    self.buttonEnd = Button(self.root, command=self.button_end_click, width=30, height=30, text="end",
                            font=("Arial", 28), bg="red")
    self.buttonEnd.place(x=1680, y=60, width=80, height=80)

    self.buttonTen = Button(self.root, command=self.ten, width=30, height=30, text="batch", font=("Arial", 24),
                            bg="red")
    self.buttonTen.place(x=1760, y=60, width=80, height=80)

    self.buttonClear = Button(self.root, command=self.button_clear_one_click, width=30, height=30, text="C_F",
                              font=("Arial", 16), bg="red")
    self.buttonClear.place(x=1870, y=150, width=50, height=50)

    self.buttonClear = Button(self.root, command=self.button_clear_two_click, width=30, height=30, text="C_S",
                              font=("Arial", 16), bg="red")
    self.buttonClear.place(x=1870, y=200, width=50, height=50)

    self.buttonClear = Button(self.root, command=self.button_clear_three_click, width=30, height=30, text="C_T",
                              font=("Arial", 16), bg="red")
    self.buttonClear.place(x=1870, y=250, width=50, height=50)

    self.buttonClear = Button(self.root, command=self.button_clear_others_click, width=30, height=30, text="C_O",
                              font=("Arial", 16), bg="red")
    self.buttonClear.place(x=1870, y=300, width=50, height=50)

    self.buttonClear = Button(self.root, command=self.button_clear_all_click, width=30, height=30, text="C_A",
                              font=("Arial", 16), bg="red")
    self.buttonClear.place(x=1870, y=350, width=50, height=50)

    self.root.mainloop()

def switch(self):
    self.root.flag = True
    while self.root.flag:
        i = random.randint(1, len(self.people) - 1)
        self.first["text"] = self.people[i]
    if 0 <= len(self.winner4) < 10:
        self.winner4.append(self.people.pop(i))
    elif len(self.winner4) == 10 and 0 <= len(self.winner3) < 3:
        self.winner3.append(self.people.pop(i))
    elif len(self.winner4) == 10 and len(self.winner3) == 3 and 0 <= len(self.winner2) < 2:
        self.winner2.append(self.people.pop(i))
    elif len(self.winner4) == 10 and len(self.winner3) == 3 and len(self.winner2) == 2 and len(self.winner1) == 0:
        self.winner1.append(self.people.pop(i))
    self.cute1["text"] = "一等奖(1)<华为mate20>:" + self.string_(self.winner1)
    self.cute2["text"] = "二等奖(2)<戴森系列卷发棒or吸尘器>:" + self.string_(self.winner2)
    self.cute3["text"] = "三等奖(3)<马歇尔蓝牙音箱orBose蓝牙耳机>:" + self.string_(self.winner3)
    self.cute4["text"] = "参与奖(10)<电影票>:" + self.string_(self.winner4)

def button_start_click(self):
    t = threading.Thread(target=self.switch)
    t.start()

def button_end_click(self):
    self.root.flag = False

def ten(self):
    """一次性抽10个"""
    for n in range(10):
        i = random.randint(1, len(self.people) - 1)
        if 0 <= len(self.winner4) < 10:
            self.winner4.append(self.people.pop(i))
        elif len(self.winner4) == 10 and 0 <= len(self.winner3) < 3:
            self.winner3.append(self.people.pop(i))
        elif len(self.winner4) == 10 and len(self.winner3) == 3 and 0 <= len(self.winner2) < 2:
            self.winner2.append(self.people.pop(i))
        elif len(self.winner4) == 10 and len(self.winner3) == 3 and len(self.winner2) == 2 and len(self.winner1) == 0:
            self.winner1.append(self.people.pop(i))
    self.cute1["text"] = "一等奖(1)<华为mate20>:" + self.string_(self.winner1)
    self.cute2["text"] = "二等奖(2)<戴森系列卷发棒or吸尘器>:" + self.string_(self.winner2)
    self.cute3["text"] = "三等奖(3)<马歇尔蓝牙音箱orBose蓝牙耳机>:" + self.string_(self.winner3)
    self.cute4["text"] = "参与奖(10)<电影票>:" + self.string_(self.winner4)

@staticmethod
def string_(list_data):
    """将列表数据去掉中括号"""
    res = ""
    if len(list_data) > 0:
        for i in list_data:
            res += str(i) + ","
        res = res.strip(",")
    else:
        res = ""
    return res

def button_clear_others_click(self):
    """清除其他奖项序号"""
    self.people += self.winner4
    self.winner4 = []
    self.cute4["text"] = "参与奖(10)<电影票>:" + self.string_(self.winner4)

def button_clear_one_click(self):
    """清除一等奖序号"""
    self.people += self.winner4
    self.winner1 = []
    self.cute1["text"] = "一等奖(1)<华为mate20>:" + self.string_(self.winner1)

def button_clear_two_click(self):
    """清除其他奖项序号"""
    self.people += self.winner4
    self.winner2 = []
    self.cute2["text"] = "二等奖(2)<戴森系列卷发棒or吸尘器>:" + self.string_(self.winner2)

def button_clear_three_click(self):
    """清除其他奖项序号"""
    self.people += self.winner4
    self.winner3 = []
    self.cute3["text"] = "三等奖(3)<马歇尔蓝牙音箱orBose蓝牙耳机>:" + self.string_(self.winner3)

def button_clear_all_click(self):
    """清除所有数据"""
    self.button_clear_one_click()
    self.button_clear_two_click()
    self.button_clear_three_click()
    self.button_clear_others_click()
    self.first["text"] = ""
    self.people = list(range(1, 91))

def del_num(self):
    content_str = self.e.get()
    content_list = content_str.split(",")
    # print("get--->>>", content, self.winner1, self.winner2, self.winner3, self.winner4)
    for content in content_list:
        try:
            content = int(content)
        except Exception as e:
            print(e)
            pass
        if content in self.winner1:
            self.winner1.remove(content)
            self.cute1["text"] = "一等奖(1)<华为mate20>:" + self.string_(self.winner1)
        elif content in self.winner2:
            self.winner2.remove(content)
            self.cute2["text"] = "二等奖(2)<戴森系列卷发棒or吸尘器>:" + self.string_(self.winner2)
        elif content in self.winner3:
            self.winner3.remove(content)
            self.cute3["text"] = "三等奖(3)<马歇尔蓝牙音箱orBose蓝牙耳机>:" + self.string_(self.winner3)
        elif content in self.winner4:
            self.winner4.remove(content)
            self.cute4["text"] = "参与奖(10)<电影票>:" + self.string_(self.winner4)
        else:
            pass

if name == ‘main’:
prize = Prize()

整个实现过程很简陋,但是可以初步试用一下新模块的功能。

自己打包一下就可以分享给其他小伙伴玩耍了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值