先看運行結果

前言
今天給大家介紹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('不能關閉', '請先停止名單滾動')
return
root.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=https://www.cnblogs.com/guzichuan/archive/2022/12/10/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=https://www.cnblogs.com/guzichuan/archive/2022/12/10/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的問題,可以在評論區留言或者私信我哦
覺得我分享的文章不錯的話,可以關注一下我,或者給文章點贊(/≧▽≦)/
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/539702.html
標籤:其他
下一篇:PYTHON爬取圖片
