文章目录
起因
刚上大学的表弟问我,大学准备好好玩玩,问我有没有什么不挂科的秘诀。
哎,这可就问对人了,要想不挂科,先把老师贿赂好,当然,咱们说的贿赂不是送钱啥的,这不是侮辱老师吗?
于是我连夜给表弟写了一个课堂点名系统,让他给每个任课老师都送一遍,方便老师就是方便自己,嘿嘿~
准备工作
首先我们需要准备好点名的姓名文件,使用的时候导入进去就可以开始点名了。
新建一个文本文档,将姓名设置设置好,如下:
使用系统库和第三方库都比较常规
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
效果展示
恭喜麻辣香锅喜提点名,卢姥爷不甘寂寞,出来两次都没点中,看来雀氏凉了~
代码实战
点名功能实现
classWorkThread(QThread):
trigger = pyqtSignal(str)
finished = pyqtSignal(bool)def__init__(self, parent=None):super(WorkThread, self).__init__(parent)
self.parent = parent
self.working =Truedef__del__(self):
self.working =False
self.wait()defrun(self):
data_list = self.parent.data_list
iflen(data_list)>=1:
ran = random.randint(20,40)print('遍历次数:', ran)for a inrange(ran):
name = random.choice(data_list)
self.trigger.emit(name)print(name)
time.sleep(0.6)
self.finished.emit(True)else:
self.trigger.emit('无数据')
页面布局主要代码
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('源码自取君羊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)defstart_btn_click(self):if self.start_btn.text().strip()=='开始点名':
self.thread_.start()else:
self.start_btn.setText('开始点名')defset_name(self, name):
self.current_name.setText(name)deffinished(self, finished):if finished isTrue:
self.start_btn.setText('就是你了')defimport_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电子书籍,以及本文源代码!
直接在文末名片自取就好了!
好了,今天的分享就到这里结束了,大家快去试试吧。
版权归原作者 轻松学Python 所有, 如有侵权,请联系我们删除。