python制作的點名神器(代碼簡單,適合初學者),老師再也不用發愁點名了
python利用tkinter制作的點名神器,今天一個老師說讓我幫他制作一個可以用來點名的小程式,由于和這個老師的關系比較好,還有就是教師這個崗位也是比較辛苦了,自己也就答應了下來,剛開始的時候,自己和這個老師在交接需求的時候,老師這邊也是沒有明確啥需求,再者就是這個也是自己義務奉獻的,自己寫的點名程式也是比較復雜的,當時交給老師的時候,老師半天來了一句,能整個簡單的嗎,就可以點名就行了,有點傷心,好吧,那就來個最簡單的吧,
這個真的是非常簡單了哈,文末附有下載地址
先看下效果圖吧
python點名神器
頭禿,話不多,直接上原始碼
#!/usr/bin/env python
# coding:gbk
import pyttsx3
import openpyxl
import random
import tkinter as tk
import tkinter.messagebox
#### 利用python第三方庫pyttsx3來將文字用語音發送出來
def voice(a):
## pytttsx初始化
engine = pyttsx3.init()
## a代表著需要轉成音頻的文字
engine.say(a)
# 注意,沒有本句話是沒有聲音的
engine.runAndWait()
### 創建一個list來保存已經被抽到名字的同學
ed_name= []
root = tk.Tk() # 創建視窗物件
root.title("花名冊 -----點名輔助程式 v1.10 ")
root.geometry("500x300")
# 創建抽取到的同學姓名展示部分
labelx=tk.Label(root,text="紫薇",fg="red",font=("宋體",80),width=9,height=2)
labelx.grid(row=0)
name_data = [] # 創建存盤所有學生姓名的串列
def execl(filename, sheetname):
wb = openpyxl.load_workbook(filename) # 打開Excel
sheet = wb[sheetname] # 定位表單
# 創建一個空串列
column = 1
for row in range(2, sheet.max_row + 1):
if sheet.cell(row, column).value == "":
continue
name_data.append(sheet.cell(row, column).value) # 將第一列的每一行數值遍歷添加到name_data串列中;
return name_data
execl("config\\name.xlsx","Sheet1") # 呼叫一下execl函式,在沒有開始點名之前先將姓名添加到name_data串列之中
def ceshi():
while 2>1:
a = random.randint(0,len(name_data)-1)## 產生亂數,作為list的下標index
b = "下面請"+name_data[a]+"同學來回答問題"## 拼接成字串
## 判斷ed_name元素個數是不是與name_data串列中相同,如果相同,那么代表著所有的同學名字都被抽點過了
if len(ed_name) == len(name_data):
tk.messagebox.askokcancel("提示", '所有的學生都已經抽取了一邊,如需要繼續,請關閉該程式重新打開')
break
## 判斷被抽點到的同學是不是已經被抽點過,如果被抽點過,則跳過該同學
if name_data[a] in ed_name:
continue
ed_name.append(name_data[a]) # 將被抽點到的學生添加到ed_name例表中,標記已經被抽點
labelx = tk.Label(root, text=name_data[a], fg="red", font=("宋體", 80), width=9, height=2)# 在姓名框里面展示姓名
labelx.grid(row=0)
voice(b) ## 語音讀取
break
tk.Button(root, text="開始點名", width=15, command=ceshi).grid(row=1,padx=10, pady=10,sticky='s') # s南邊也就是下邊
root.mainloop() # 進入訊息回圈
思路介紹
相信大家看了上面原始碼,也是知道了大概思路
- 第一步,該程式會讀取當前目錄下的name.xlsx檔案,并將學生姓名app到name_data串列中
- 第二步,產生一個亂數,來作為name_data的下標,來獲取名稱,并展示出來
- 第三步,判斷該學生是不是被第二次抽到,避免重復抽到同一個人
- 第四步,判斷當前是不是所有人都抽到了
- 第五步,利用tk將GUI界面展示出來
name.xlsx檔案填寫格式
看到圖片相信大家也就懂了
結束語
原始碼下載地址,不建議大家下載,還是希望大家可以靠技術吃飯,香香
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/379191.html
標籤:python

