在读大学时,很多老师在课前或课后都会进行点名,有时在课中也会抽某些同学回答问题。一般是老师拿出一个花名册,然后按顺序点到或随机抽一些人名进行点名。
今天我们用Python来实现一个简单的点名系统,之后有时间再慢慢调优这个程序。你也可以把这个程序改成公司开会或聚会的随机点名系统。
一、自动点名程序效果展示
我们先来看看随机点名小程序最终的实现效果。
自动点名系统
接下来我们来详细介绍如何用Python制作随机点名程序。
二、加载库
首先加载实现本文功能需要的库。
import tkinter as tk
from pandas import read_excel
from random import randint
import os
from PIL import Image
from PIL import ImageTk
from win32com.client import Dispatch
三、设置文件路径并加载数据
Python中有可以自动播报语音的库,这样就可以免去我们一个一个念名字的麻烦啦。
#控制播放语音
speaker = Dispatch("SAPI.SpVoice")
#设置文件存放路径
os.chdir(r"F:\微信公众号\Python\46_随机点名系统")
#读入数据
data = read_excel(r'学生名单.xls')
df1 = list(data['姓名'])
df2 = list(data['性别'])
注意:os.chdir中的文件路径要改成你存放学生名单的路径。
四、定义一个随机筛选名字并语音播报的函数
定义一个可以反复调用的随机筛选名字并语音播报的函数。
def roll_call():
if len(df1)>0:
index_ = randint(0, len(df1) - 1)
name = df1.pop(index_)
sex = df2.pop(index_)
t.insert('insert', f'{name} {sex}\n') # 插入到tkinter界面
speaker.Speak(name)
else:
speaker.Speak('点名结束')
五、定义窗口并展示点名系统
最后我们定义一个展示窗口,在窗口中生成一些按钮和名字展示模块,当点击按钮时实现自动点名播报。
win = tk.Tk()
win.title('欢迎进入点名程序')
win.iconbitmap("pikaqiu2.ico")
win.geometry('900x900')
# Entry单行文本
L = tk.Label(win, bg='lemonchiffon', text = "随机点名小程序", font=("KaiTi", 26), width=55, height=3) # 关键:设置为背景图片
L.place(x=0, y=0)
#设置随机点名按钮,退出系统按钮
b1 = tk.Button(win, bg='lightblue', text="随机点名", font=("KaiTi", 16), width=20, height=2, command=roll_call)
b1.place(x=250, y=200)
b2 = tk.Button(win, bg='lightblue', text="退出系统", font=("KaiTi", 16), width=20, height=2, command=win.quit)
b2.place(x=550, y=200)
# Entry 单行文本
L = tk.Label(win, text="点到的学生名单如下", font=("KaiTi", 18), width=60, height=1)
L.place(x=90, y=315)
# 设置多行文本框 宽 高 文本框中字体 选中文字时文字的颜色
t = tk.Text(win, width=60, height=100, font=("KaiTi", 24), selectforeground='black') #显示文本
t.place(x=90, y=350)
win.mainloop()
至此,自动点名系统介绍完毕。如需全量代码和数据,可在公众号中回复“自动点名系统”即可免费获取。
你可能感兴趣:
用Python绘制皮卡丘
用Python绘制词云图
Python人脸识别—我的眼里只有你
Python画好看的星空图(唯美的背景)
用Python中的py2neo库操作neo4j,搭建关联图谱
Python浪漫表白源码合集(爱心、玫瑰花、照片墙、星空下的告白)