python制作课堂点名系统,从此老师对我关爱有加

news/2024/11/27 23:45:30/

前言

大家早好、午好、晚好吖 ❤ ~

准备工作

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

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


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

from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *from qdarkstyle import load_stylesheet_pyqt5import 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 = parentself.working = Truedef __del__(self):self.working = Falseself.wait()def run(self):data_list = self.parent.data_listif 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('无数据')

页面布局主要代码

PS:完整源码如有需要的小伙伴可以加下方的群去找管理员免费领取

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('源码自取君羊261823976 ')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('源码自取君羊261823976')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)) + ']条人员信息')

效果展示


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

尾语 💝

好了,今天的分享就差不多到这里了!

完整代码、更多资源、疑惑解答直接点击下方名片自取即可。

宁外给大家推荐一个好的教程:

【48小时搞定全套教程!你和大佬只有一步之遥【python教程】

有更多建议或问题可以评论区或私信我哦!一起加油努力叭(ง •_•)ง

喜欢就关注一下博主,或点赞收藏评论一下我的文章叭!!!


http://www.ppmy.cn/news/10887.html

相关文章

【Java编程进阶】Java异常详解

推荐学习专栏:Java 编程进阶之路【从入门到精通】,从入门到就业精通,买不了吃亏,买不了上当!! 文章目录1. 异常2. 异常的体系3. Error4. 异常产生的过程5. throw 关键字6. 异常处理6.1 throws 关键字6.2 tr…

程序员们有什么好的编程习惯?

优良的代码显然不是制作优秀软件的唯一要素,但是主要的要素之一。我们可能拥有世界上最好的产品和营销团队,部署了最好的平台,并以最好的框架来构建软件,但归根结底,一款软件所做的一切,都是因为有人写了一…

如何进行小红书推广?小红书平台适合推广什么产品?

小红书作为一个生活方式社区,其最大独特性就在于,大部分互联网社区更多是依靠线上的虚拟身份,而小红书用户发布的内容都来自于真实生活,一个分享用户必须具备丰富的生活和消费经验,才能有内容在小红书分享,…

分布式理论协议与算法 第三弹 BASE理论

大部分人解释这 CAP 定律时,常常简单的表述为:“一致性、可用性、分区容错性三者你只能同时达到其中两个,不可能同时达到”。实际上这是一个非常具有误导性质的说法,而且在 CAP 理论诞生 12 年之后,CAP 之父也在 2012 …

Linux中的vim最小集、指令集及其配置

目录 1. vim 最小集 2 vim指令集 2.1 命令模式的指令 2.1.1 插入模式 2.1.2 移动光标 2.1.3 删除文字 2.1.4 复制 2.1.5 替换 2.1.6 撤销 2.1.7 更改 2.1.8 跳至指定的行 2.1.9 shift ~:快速大小写切换 2.2 末行模式的指令 2.2.1 set nu/set nonu 2.2.2 vs file…

测试分析--精准分析

测试分析的概念 测试分析是建立在对「需求本身」、「用户使用场景」以及对应的「系统架构」和「实现细节」的充分了解的基础上,通过对数据流、状态变化、逻辑时序、功能/性能/兼容性等方面的分析,得出测试点的过程; 在现阶段敏捷开发模式普遍…

Vue3浅谈:(三)Vue3类与样式绑定

目录 一、Vue3 Class 绑定 1.Vue3 Class 绑定基础 绑定对象: 绑定数组 二、Vue3 Style 绑定 1.Vue3 Style 绑定基础 绑定对象: 绑定数组: 自动前缀 : 样式多值: 一、Vue3 Class 绑定 1.Vue3 Class 绑定基础 数据绑定的一个常见需…

Python学生信息管理系统源码,学生教师端分离,支持数据的增删查改、数据分析与统计 基于Tkinter带图形界面

介绍 Python学生信息管理系统。学生教师端分离,支持数据的增删查改、数据分析与统计。 下载地址:Python学生信息管理系统源码 软件架构 Python3.9版本 Python-Tkinter库开发的图形界面 Python-Pandas库数据处理 Python-matplotlib库数据分析与展示 P…