文章目录

  • 起因
  • 准备工作
  • 效果展示
  • 代码实战
  • 最后

起因

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

哎,这可就问对人了,要想不挂科,先把老师贿赂好,当然,咱们说的贿赂不是送钱啥的,这不是侮辱老师吗?

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

准备工作

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

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

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

from PyQt5.QtWidgets import *from PyQt5.QtGui import *from PyQt5.QtCore import *from qdarkstyle import load_stylesheet_pyqt5import osimport sysimport timeimport 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,有时候不知道怎么学,从哪里开始学。掌握了基本的一些语法或者做了两个案例后,不知道下一步怎么走,不知道如何去学习更加高深的知识。

那么对于这些大兄弟们,我准备了大量的免费视频教程,PDF电子书籍,以及本文源代码!
直接在文末名片自取就好了!

好了,今天的分享就到这里结束了,大家快去试试吧。