用Python写了个课堂随机点名软件

1. 闲话前叙

事情是这样的,一次在上毛概课的时候,老师竟然在多媒体大屏上打开了一款随机点名软件进行随机点名,引的课堂气氛也是活跃了起来。

老师用的这款随机点名软件,主要对名字随机显示,并且显示在大屏上,然后把结果用语音朗读出来,然后我就想,何不自己开发一个呢?

2. 开发思路和技术分析

首先这款软件是运行在Windows上的,我想着就用Pyqt库进行图形界面化的实现,然后再用Pyinstaller库进行打包,这样代码就可以脱离IDLE运行了。

语音朗读这个功能,则可以用Python的一个文本转语音的库pyttsx3库 来实现。

对了,使用这个库的时候,文本转语音会阻塞主线程的运行,所以要使用Python的threading库来开启另一个线程,对语音进行朗读。

    def speak_name(self):
        """朗读点名结果,开辟另一个线程,避免朗读时阻塞主线程的UI刷新"""
        def speak():
            time.sleep(1)
            self.engine.say(self.name)
            self.engine.runAndWait()

        t = threading.Thread(target=speak)
        t.start()

3. 软件功能描述

这个软件主要是实现对学生的姓名随机挑选,然后显示在界面上,所以是比较简单的。

  • 支持导入UTF-8编码的TXT文本文档和CSV文件作为学生名单数据。
  • 然后对名字随机显示在界面上,支持名字的随机颜色,并且点名时有相关的音效。
    def random_color(self):
        """生成随机颜色"""
        while True:
            r = random.randint(0, 255)
            g = random.randint(0, 255)
            b = random.randint(0, 255)
            # 计算对比度
            contrast = (r * 0.299 + g * 0.587 + b * 0.114) / 255
            if self.min_contrast <= contrast <= self.max_contrast:
                return '#{:02X}{:02X}{:02X}'.format(r, g, b)

上面是在黑色背景下,生成可见性和对比度高的颜色的算法,主要为了生成的随机颜色被设置成文本颜色时,在黑色背景下可见性好,易于朗读。 

  • 支持最后结果名字的朗读功能

4. 软件运行界面

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值