【Python】tkinter应用之抽奖程序

tkinter应用之抽奖程序

使用tkinter实现抽奖程序,使用时可以修改抽奖名单,然后点击‘开始’和‘停止’按钮来控制界面上的名单滚动实现抽奖功能。当然该程序也可以用于上课时随机提问。

实现效果

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

程序代码

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('WM_DELETE_WINDOW',closeWindow)

#模拟学生名单,可以加上数据库访问接口,从数据库中读取学生名单
students = ['张三','李四','王五','赵六','周七','钱八']
#变量,用来控制是否滚动显示学生名单
root.flag = False

def switch():
    root.flag = True
    #随机打乱学生名单
    t = students[:]
    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组件
#可以根据需要进行添加,但要修改上面的线程函数代码
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)

#启动主程序
root.mainloop()
  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

稚皓君

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值