Python实现抽奖程序

Python实现抽奖程序

抽奖程序

 

 

"""
抽奖程序
使用时可以修改嘉宾名单,然后单机‘开始’和‘停止’按钮
来控制界面上名单的滚动实现抽奖功能,涉及的模块主要
有多线程
"""
import itertools
import random
import threading
import time
import tkinter
import tkinter.messagebox

root = tkinter.Tk()
#窗口标题
root.title("随机提问")
root.geometry("260x180+400+300")
#不允许改变窗口大小
root.resizable(False,False)
#关闭程序时,执行的函数代码,停止滚动显示学生名单
def closeWindow():
    root.flag = False
    time.sleep(0.1)
    root.destroy()
root.protocol("VM_DELETE_WINDOW",closeWindow)
#模拟学生名单,可以加上数据库访问接口,从数据库中读取学生名单
student = ["张三","李四","王五","赵六","周七","钱八"]
#变量,用来控制是否滚动显示学生名单
root.flag = False
def switch():
    root.flag = True
    #随机打乱学生名单
    t = student[:]
    random.shuffle(t)
    t = itertools.cycle(t)

    while root.flag:
        #滚动显示
        lbFirst["text"] = lbSecond["text"]
        lbSecond["text"] = lbThird["text"]
        lbThird["text"] = next(t)
        #数字可以修改,控制滚动速度
        time.sleep(0.1)
def btnStartClick():
    #每次单机‘开始’按钮启动新线程,并禁用开始按钮,启动停止按钮
    t = threading.Thread(target=switch)
    t.start()
    btnStart["state"] = "disabled"
    btnStop["state"] = "normal"
btnStart = tkinter.Button(root,text="开始",command=btnStartClick)
btnStart.place(x=30,y=10,width=80,height=20)
def btnStopClick():
    #单机停按钮结束滚动显示,弹窗提示中将名单,修改按钮状态
    root.flag = False
    time.sleep(0.3)
    tkinter.messagebox.showinfo("恭喜","本次中奖:"+lbSecond["text"])
    btnStart["state"] = "normal"
    btnStop["state"] = "disabled"
btnStop = tkinter.Button(root,text="停",command=btnStopClick)
btnStop["state"] = "disabled"
btnStop.place(x=150,y=10,width=80,height=20)
#用来滚动显示学生名单的3个Label组件
#可以根据需求添加Label组件的数量,但是要修改上面的代码函数代码
lbFirst = tkinter.Label(root,text="")
lbFirst.place(x=80,y=60,width=100,height=20)
#红色Label组件,表示中奖名单
lbSecond = tkinter.Label(root,text="")
lbSecond["fg"] = "red"
lbSecond.place(x=80,y=90,width=100,height=20)

lbThird = tkinter.Label(root,text="")
lbThird.place(x=80,y=120,width=100,height=20)
#启动tkinter主程序
root.mainloop()
hmoban主题是根据ripro二开的主题,极致后台体验,无插件,集成会员系统
自学咖网 » Python实现抽奖程序