Python编写抽奖式随机提问程序

本文主要思路:使用tkinter编写界面,使用3个Label组件和多线程技术实现学生名单的滚动显示。

import tkinter

import tkinter.messagebox

import random

import threading

import itertools

import time

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    

    while root.flag:

        # 随机打乱学生名单

        t = students[:]

        random.shuffle(t)

        t = itertools.cycle(t)

        # 滚动显示

        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 = 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'])

btnStop = tkinter.Button(root, text='停', command=btnStopClick)

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)

# 启动tkinter主程序

root.mainloop()

运行视频:


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

dongfuguo

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

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

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

打赏作者

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

抵扣说明:

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

余额充值