刷完抖音发现了一个老师正在用的教室点名系统。我用PyQt5实现同段,导入学生姓名,测试完美运行。【阅读全文】运行效果展示:完整的源码块依旧放在文末,需要的话直接运行到文末即可获取下载方法。使用时,准备好学生姓名的文件,使用导入数据按钮直接导入即可开始点名。创建一个新的文本文档并设置名称设置。名称文件的示例如下。使用系统库或者第三方库比较常规,这里就不一一介绍了。fromPyQt5.QtWidgetsimport*fromPyQt5.QtGuiimport*fromPyQt5.QtCoreimport*fromqdarkstyleimportload_stylesheet_pyqt5importosimportsysimporttimeimportrandom为了和UI界面的主线程分离,我们还是采用QThread多线程的方式来实现随机点名模块化。这样做的目的是防止主线程阻塞,下面是子线程的实现部分。类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()defrun(self):data_list=self.parent.data_list如果len(data_list)>=1:ran=random.randint(20,40)print('遍历次数:',ran)forainrange(ran):name=random.choice(data_list)self.trigger.emit(name)print(name)time.sleep(0.6)self.finished.emit(True)else:self.trigger.emit('nodata')UI界面的实现部分也比较常规,主要实现部分的代码块如下。classClassCollSystem(QWidget):def__init__(self):super(ClassCollSystem,self).__init__()self.data_list=[]self.init_ui()definit_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:"MicrosoftJhengHei";')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:"MicrosoftJhengHei";')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)defstart_btn_click(self):ifself.start_btn.text().strip()=='开始点名':self.thread_.start()else:self.start_btn.setText('Startrollcall')defset_name(self,name):self.current_name.setText(name)deffinished(self,finished):如果完成为真:自己。start_btn.setText('是你')defimport_btn_click(self):file=QFileDialog.getOpenFileName(self,'Selectfile',os.getcwd(),'TextFile(*.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知识分享的公众号,希望得到大家的关注~【上一篇精彩】开工啦!给PDF文件批量添加中文水印……大年初二,做了一个windows通知管理器!百度图片下载器2.0gif动态图片生成器,多张图片组合生成一张动态图片...python中几种常见的数据处理操作,一行代码即可完成!
