python线下课(当我把用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 自取就好了!
好了 ,今天的分享就到这里结束了 ,大家快去试试吧 。
声明:本站所有文章 ,如无特殊说明或标注,均为本站原创发布 。任何个人或组织 ,在未征得本站同意时 ,禁止复制 、盗用 、采集、发布本站内容到任何网站 、书籍等各类媒体平台 。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理 。
创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!