当我把用Python做的课堂点名系统献给各科老师后,再也没挂过科
|
刚上大学的表弟问我,大学准备好好玩玩,问我有没有什么不挂科的秘诀。
哎,这可就问对人了,要想不挂科,先把老师贿赂好,当然,咱们说的贿赂不是送钱啥的,这不是侮辱老师吗?
于是我连夜给表弟写了一个课堂点名系统,让他给每个任课老师都送一遍,方便老师就是方便自己,嘿嘿~
准备工作
首先我们需要准备好点名的姓名文件,使用的时候导入进去就可以开始点名了。
新建一个文本文档,将姓名设置设置好,如下:
使用系统库和第三方库都比较常规
- 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
复制代码
效果展示
恭喜麻辣香锅喜提点名,卢姥爷不甘寂寞,出来两次都没点中,看来雀氏凉了~
代码实战
点名功能实现
- 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电子书籍,以及本文源代码!
- # 直接在这个君羊 708525271 自取就好了!
复制代码
好了,今天的分享就到这里结束了,大家快去试试吧。
来源:https://www.cnblogs.com/hahaa/p/17010232.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作! |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|
|
|
发表于 2023-1-2 16:08:06
举报
回复
分享
|
|
|
|