Python开发抖音同款课堂点名系统,PyQt5写起来很简单

抖音的时候发现一个老师在用的课堂点名系统。用PyQt5实现了一下同款,导入学生姓名,测试了一下完美运行。

【阅读全文】

操作效果展示:

完整源代码块还是放在了文章的最后面,有需要直接运行到文末获取下载方式就好了。

使用的时候准备好学生姓名的文件,使用导入数据的按钮直接导入就可以开始点名了。新建一个文本文档,将姓名设置设置好,姓名文件示例如下。

干货主要有:

① 200 多本 Python 电子书(和经典的书籍)应该有

② Python标准库资料(最全中文版)

③ 项目源码(四五十个有趣且可靠的练手项目及源码)

④ Python基础入门、爬虫、网络开发、大数据分析方面的视频(适合小白学习)

⑤ Python学习路线图(告别不入流的学习)

全部搞定~私信小编01即可获取完整源代码

使用系统库或者第三方库都比较常规,这里就不一一介绍了。

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

为了和UI界面的主线程分离开来,我们采用的还是QThread多线程的方式来实现随机点名模块的。这样做的目的是为了防止主线程阻塞,下面是子线程的实现部分。

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('无数据')

UI 界面的实现部分也比较常规,下面主要实现部分的代码块。

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('课堂点名系统 公众号:[Python 集中营]')

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('信息提示 | 公众号:[Python 集中营]')

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)) + ']条人员信息')

最后,将主页面加入主体循环直接运行可以了。

相关文章

抖音开通了商品橱窗怎么交保证金?打开手机上的抖音APP,点击...
抖音在哪里关注橱窗呢?让我们一起来看看吧,本篇经验将介绍...
抖音现在已经是人尽皆知的短视频平台,无论男女老少随处可见...
抖音怎样开启同步粉丝数量?抖音中绑定第三方账号后需要粉丝...
大家最近应该都知道了,抖音小店也可以用个人身份证来开店了...
近年来,随着抖音平台影响力的不断增强,越来越多的品牌和商...