Python实战案例,tkinter+random模块,实现课堂随机抽选提问并语音播报学生姓名
创始人
2024-03-27 03:07:27

前言

今天给大家介绍Python实现课堂随机抽选提问并语音播报学生姓名实战案例,废话不多说直接开整~

开发工具

Python版本: 3.8

相关模块:

tkinter模块

time模块

random模块

环境搭建

安装Python并添加到环境变量,pip安装需要的相关模块即可。

核心功能设计

总体来说,我们这款课堂点名器实现的思路大致是,可以自定义设置班级学生姓名或者默认通过学号进行学生随机点名抽取,随机抽取到的学生将以语音播报的形式进行展示出来。

拆解需求,接下来我们可以通过以下几步进行实现:

排版布局设计
读取学生名单,如果不存在文件就使用模拟数据
随机打乱学生名单
实现对学生姓名的随机点名抽取语音播报功能
用来滚动显示学生名单

win32con模块安装

python -m pip install pypiwin32

排版布局设计

根据点名器所需要的功能,首先我们可以进行排版布局设计,我们这次主要使用TKinter模块。主要包含了读取学生名单,如果不存在文件就使用模拟数据、随机打乱学生名单、实现对学生姓名的随机点名抽取语音播报功能、用来滚动显示学生名单等。

核心设计代码

root = tkinter.Tk()
# 窗口标题
root.title('随机提问')
# 窗口初始大小和位置
root.geometry('260x180+400+300')
# 不允许改变窗口大小
root.resizable(False, False)# 关闭程序时执行的函数代码,停止滚动显示学生名单
def closeWindow():if rolling.get():showinfo('不能关闭', '请先停止名单滚动')returnroot.destroy()
root.protocol('WM_DELETE_WINDOW', closeWindow)# 读取学生名单,如果不存在文件就使用模拟数据
try:with open('学生名单.txt', encoding='utf8') as fp:students = fp.read().splitlines()
except:showinfo('学生名单不存在','当前目录中没有文件:学生名单.txt\n临时使用模拟数据')students = ['周楚暮', '金夜羽', '乐天晟', '端圣夜', '司翊旋', '上官冽']# 变量,用来控制是否滚动显示学生名单
rolling = tkinter.BooleanVar(root, value=False)def switch():rolling.set(True)# 随机打乱学生名单t = students[:]shuffle(t)t = cycle(t)while rolling.get():        # 滚动显示lbFirst['text'] = lbSecond['text']        lbSecond['text'] = lbThird['text']lbThird['text'] = next(t)# 数字可以修改,控制滚动速度sleep(0.1)def btnStartClick():# 每次单击“开始”按钮启动新线程Thread(target=switch).start()btnStart['state'] = 'disabled'btnStop['state'] = 'normal'
btnStart = tkinter.Button(root,text='开始',command=btnStartClick)
btnStart.place(x=30, y=10, width=80, height=20)saying = tkinter.BooleanVar(root, value=False)
def say_name():while has_speech and saying.get():say(f"请{lbSecond['text'].replace(',','')}回答问题")def btnStopClick():# 单击“停”按钮结束滚动显示rolling.set(False)sleep(0.3)saying.set(True)Thread(target=say_name).start()showinfo('恭喜', '本次中奖:'+lbSecond['text'])saying.set(False)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)

运行结果

在这里插入图片描述

最后

为了感谢读者们,我想把我最近收藏的一些编程干货分享给大家,回馈每一个读者,希望能帮到你们。

里面有适合小白新手的Python实战教程给到大家~

快来和小鱼一起成长进步吧!

① 100+多本PythonPDF(主流和经典的书籍应该都有了)

② Python标准库(最全中文版)

③ 爬虫项目源码(四五十个有趣且经典的练手项目及源码)

④ Python基础入门、爬虫、web开发、大数据分析方面的视频(适合小白学习)

⑤ Python学习路线图(告别不入流的学习)

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...