前言
大家早好、午好、晚好吖 ❤ ~
准备工作
首先我们需要准备好点名的姓名文件,使用的时候导入进去就可以开始点名了。
新建一个文本文档,将姓名设置设置好,如下:
使用系统库和第三方库都比较常规
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教程】
有更多建议或问题可以评论区或私信我哦!一起加油努力叭(ง •_•)ง
喜欢就关注一下博主,或点赞收藏评论一下我的文章叭!!!