首页 > 编程语言 >教你用Python实现抽奖式随机提问

教你用Python实现抽奖式随机提问

时间:2022-12-09 18:03:59浏览次数:64  
标签:抽奖 tkinter Python text 教你用 Label 线程 time root

案例介绍

欢迎来的我的小院,我是霍大侠,恭喜你今天又要进步一点点了!我们来用Python编程实战案例,做一个简易的随机提问器。随机提问器主要实现随机,乱序,提取的功能。通过实战我们将学会Python内置tkinter的语法知识。

案例演示

我们点击“开始”,学生名字开始滚动;点击“停”,被抽中的学生将“中奖”

案例设计

Python实战案例-随机提问我们来看此案例的思维导图设计,包括案例描述,页面设计和源码学习。其中源码学习包含了random,time,tkinter三部分代码。

源码学习

进入核心代码学习,我们先来看利用random的核心代码。该段代码首先创建了学生列表,再利用赋值将该列表的值赋值给t,最后利用random.shuffle()函数对该列表进行乱序。

students = ['张三', '李四', '王五', '赵六', '周七', '钱八']

# 变量,用来控制是否滚动显示学生名单

root.flag = False

def switch():

    root.flag = True    

    while root.flag:

        # 随机打乱学生名单

        t = students[:]

        random.shuffle(t)

        t = itertools.cycle(t)

然后我们来编写核心的tkinter代码,通过btnStop.place用来滚动显示学生名单的3个Label组件,然后利用红色Label组件,表示中奖名单。

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()

总结思考

学习点 1、time.sleep(secs):位于 time 模块中的 sleep (secs) 函数,可以实现令当前执行的线程暂停 secs 秒后再继续执行

 # 单击“停”按钮结束滚动显示

    root.flag = False

    time.sleep(0.3)

    tkinter.messagebox.showinfo('恭喜', '本次中奖:'+lbSecond['text'])

2、threading:提供了一个比thread模块更高层的API来提供线程的并发性,这些线程并发运行并共享内存

# 每次单击“开始”按钮启动新线程

    t = threading.Thread(target=switch)

    t.start()

3、Itertools:Python中,迭代器(Iterator)是常用来做惰性序列的对象,只有当迭代到某个值的时候,才会进行计算得出这个值

t = itertools.cycle(t)

        # 滚动显示

问答 1、time.sleep(secs)可以实现令当前执行的线程暂停 secs 秒后再继续执行对吗?2、threading是用来实现并发操作的吗?

关注我,跟着我每天学习一点点,让你不再枯燥,不再孤单..

全网可搜:小院里的霍大侠, 免费获取简单易懂的实战编程案例。编程/就业/副业/创业/资源。

标签:抽奖,tkinter,Python,text,教你用,Label,线程,time,root
From: https://blog.51cto.com/huodaxia/5926328

相关文章

  • python初步了解队列
    python初步了解队列队列是一种先入先出的数据结构单纯用列表来实现队列运用pop()函数,进行出队效率很低,因为在列表开头删除元素需要将其他元素往前移动一位.所以一般用......
  • python初步了解链表
    python数据结构——链表链表由一个个节点组成,每个节点包含自己的存储数据和下一个节点。单链表简单实现先创造一个类来表示节点与节点之间的关系classNode:def......
  • python初步了解栈
    python初步了解栈栈栈是一种后入先出的数据结构。python用列表实现堆栈非常容易,使用append函数,即可实现堆栈,pop()函数即可实现从栈顶取出元素。stack=[3,4,5]stac......
  • python序列
    python序列序列包括字符串,元组,列表序列的操作在三者中都适用,同时三者存在特定的操作操作符操作作用ain/notins判断元素是否在序列中s+t连接两个序......
  • python元组
    python元组元组具体格式如下:a=(1,2)以上两个都是元组,但是一般为了易读和方便,一般使用带小括号的方式。元组的创建:a=()x=tuple()print(type(a))print(type(x......
  • python字符串
    python学习字符串处理方法1.大小写转换函数作用str.lower()全小写str.upper()全大写str.capitalize()第一个字符大写str.swapcase()大写转小写,小......
  • python集合
    python集合集合同dict类似也由{}表示,但是他只包含键,而没有对应的值,同时元素也不能重复集合的创建只能用set():a=set()print(type(a))#<class'set'>内置方法(1)se......
  • python字典
    python字典字典由key和value组成,一个key对应一个value,且key不能重复,这样我们能通过key来访问value。我们可以通过以下两中方式创建一个空字典dic1={}dic2=dict()......
  • python列表
    列表的运用1.减少元素(1)dells[]place=['lasa','chengdu','litang','xian','lundon']delplace[0]#输出['chengdu','litang','xian','lundon']还可以删......
  • python推导式
    python推导式推导式是用一行式子来完成循环操作的语句,一般与for循环结合来使用。列表推导式公式[exprforvalueincollection[ifcondition]]例子对循环内元素......