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轻松写个课堂随机点名系统的文章就介绍到这了,更多相关Python课堂点名系统内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
python requests.post带head和body的实例
今天小编就为大家分享一篇python requests.post带head和body的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2019-01-01Pytorch上下采样函数之F.interpolate数组采样操作详解
最近用到了上采样下采样操作,pytorch中使用interpolate可以很轻松的完成,下面这篇文章主要给大家介绍了关于Pytorch上下采样函数之F.interpolate数组采样操作的相关资料,需要的朋友可以参考下2022-04-04Python实现经典算法拓扑排序、字符串匹配算法和最小生成树实例
这篇文章主要介绍了Python实现经典算法拓扑排序、字符串匹配算法和最小生成树实例,拓扑排序、字符串匹配算法和最小生成树是计算机科学中常用的数据结构和算法,它们在解决各种实际问题中具有重要的应用价值,需要的朋友可以参考下2023-08-08Django restframework 源码分析之认证详解
这篇文章主要介绍了Django-restframework 源码分析之认证详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧2019-02-02Pandas DataFrame中的tuple元素遍历的实现
这篇文章主要介绍了Pandas DataFrame中的tuple元素遍历的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2019-10-10
最新评论