Python轻松写个课堂随机点名系统

 更新时间:2023年01月03日 11:25:14   作者:轻松学Python  
现在的学生大部分都很积极,会主动举手回答问题。但是,也会遇到一些不好的情况,比如年级越高主动举手的人越少,所以本文写了一个随机的学生点名系统可以帮老师解决这些问题

起因

刚上大学的表弟问我,大学准备好好玩玩,问我有没有什么不挂科的秘诀。

于是我连夜给表弟写了一个课堂点名系统,让他给每个任课老师都送一遍,方便老师就是方便自己,嘿嘿~

准备工作

首先我们需要准备好点名的姓名文件,使用的时候导入进去就可以开始点名了。

新建一个文本文档,将姓名设置设置好,如下:

使用系统库和第三方库都比较常规

from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from qdarkstyle import load_stylesheet_pyqt5
import os
import sys
import time
import random

效果展示

恭喜麻辣香锅喜提点名,卢姥爷不甘寂寞,出来两次都没点中,看来雀氏凉了~

代码实战

点名功能实现

class WorkThread(QThread):
    trigger = pyqtSignal(str)
    finished = pyqtSignal(bool)
    def __init__(self, parent=None):
        super(WorkThread, self).__init__(parent)
        self.parent = parent
        self.working = True
    def __del__(self):
        self.working = False
        self.wait()
    def run(self):
        data_list = self.parent.data_list
        if len(data_list) >= 1:
            ran = random.randint(20, 40)
            print('遍历次数:', ran)
            for a in range(ran):
                name = random.choice(data_list)
                self.trigger.emit(name)
                print(name)
                time.sleep(0.6)
            self.finished.emit(True)
        else:
            self.trigger.emit('无数据')

页面布局主要代码

class ClassCollSystem(QWidget):
    def __init__(self):
        super(ClassCollSystem, self).__init__()
        self.data_list = []
        self.init_ui()
    def init_ui(self):
        '''子线程调用'''
        self.thread_ = WorkThread(self)
        self.thread_.trigger.connect(self.set_name)
        self.thread_.finished.connect(self.finished)
        '''应用初始化信息'''
        self.setWindowTitle('源码自取君羊708525271 ')
        self.setWindowIcon(QIcon('课堂点名.ico'))
        self.setFixedSize(500, 350)
        '''姓名信息布局'''
        vbox_name = QVBoxLayout()
        self.current_name = QLabel()
        self.current_name.setText('随机点名啦')
        self.current_name.setStyleSheet(
            'font-size:50px;text-align:center;font-weight:bold;font-family:"Microsoft JhengHei";')
        vbox_name.addWidget(self.current_name)
        vbox_name.setAlignment(Qt.AlignCenter)
        '''开始信息布局'''
        vbox_start = QVBoxLayout()
        self.start_btn = QPushButton()
        self.start_btn.setText('开始点名')
        self.start_btn.setFixedSize(160, 50)
        self.start_btn.setStyleSheet(
            'font-size:30px;font-weight:bold;text-align:center;font-family:"Microsoft JhengHei";')
        self.start_btn.clicked.connect(self.start_btn_click)
        vbox_start.addWidget(self.start_btn)
        vbox_start.setAlignment(Qt.AlignCenter)
        vbox_start.addSpacing(80)
        '''数据信息布局'''
        vbox_data = QHBoxLayout()
        self.message = QLabel()
        self.message.setText('源码自取君羊708525271')
        self.message.setStyleSheet(
            'font-size:12px;')
        self.import_btn = QPushButton()
        self.import_btn.setText('导入数据')
        self.import_btn.setFixedSize(90, 25)
        self.import_btn.clicked.connect(self.import_btn_click)
        vbox_data.addWidget(self.message)
        vbox_data.addStretch(1)
        vbox_data.addWidget(self.import_btn)
        '''整体布局'''
        vbox = QVBoxLayout()
        vbox.addLayout(vbox_name)
        vbox.addLayout(vbox_start)
        vbox.addLayout(vbox_data)
        self.setLayout(vbox)
    def start_btn_click(self):
        if self.start_btn.text().strip() == '开始点名':
            self.thread_.start()
        else:
            self.start_btn.setText('开始点名')
    def set_name(self, name):
        self.current_name.setText(name)

    def finished(self, finished):
        if finished is True:
            self.start_btn.setText('就是你了')

    def import_btn_click(self):
        file = QFileDialog.getOpenFileName(self, '选择文件', os.getcwd(), 'Text File(*.txt)')
        file_path = file[0]
        print(file_path)
        fl = open(str(file_path), 'r', encoding='utf-8')
        self.data_list = fl.read().strip().split('\n')
        print(self.data_list)
        self.message.setText('信息提示 | 成功导入[' + str(len(self.data_list)) + ']条人员信息')

到此这篇关于Python轻松写个课堂随机点名系统的文章就介绍到这了,更多相关Python课堂点名系统内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 使用Python实现汉诺塔问题示例

    使用Python实现汉诺塔问题示例

    这篇文章主要介绍了使用Python实现汉诺塔问题示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • 详解10个可以快速用Python进行数据分析的小技巧

    详解10个可以快速用Python进行数据分析的小技巧

    这篇文章主要介绍了详解10个可以快速用Python进行数据分析的小技巧,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-06-06
  • python 字典(dict)遍历的四种方法性能测试报告

    python 字典(dict)遍历的四种方法性能测试报告

    本文主要是针对Python的字典dict遍历的4种方法进行了性能测试,以便分析得出效率最高的一种方法
    2014-06-06
  • Python用20行代码实现批量抠图功能

    Python用20行代码实现批量抠图功能

    在日常的工作和生活中,我们经常会遇到需要抠图的场景,即便是只有一张图片需要抠,也会抠得我们不耐烦。本文将为大家分享一个20行代码就能实现是批量抠图,需要的可以参考一下
    2022-05-05
  • 在Tensorflow中查看权重的实现

    在Tensorflow中查看权重的实现

    今天小编就为大家分享一篇在Tensorflow中查看权重的实现,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-01-01
  • Python3 JSON 数据解析及日期和时间小结

    Python3 JSON 数据解析及日期和时间小结

    这篇文章主要介绍了Python3 JSON 数据解析及日期和时间,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-02-02
  • python 巡检脚本的项目实践

    python 巡检脚本的项目实践

    本文主要介绍了python 巡检脚本的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • Python判断dict中key是否存在的3种方法实例

    Python判断dict中key是否存在的3种方法实例

    大家在学会python中的字典,会发现,字典中是没有特殊顺序的,但是都存储在一个特定的key下面,下面这篇文章主要给大家介绍了关于Python判断dict中key是否存在的3种方法,需要的朋友可以参考下
    2022-04-04
  • 基于Tensorflow批量数据的输入实现方式

    基于Tensorflow批量数据的输入实现方式

    今天小编就为大家分享一篇基于Tensorflow批量数据的输入实现方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • Python全栈之正则表达式

    Python全栈之正则表达式

    这篇文章主要为大家介绍了Python正则表达式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2021-11-11

最新评论