python带你制作随机点名系统,超级简单
创始人
2024-03-07 23:43:08
0

前言

嗨喽~大家好呀,这里是魔王呐 ❤ ~!

在某些难以抉择得时候,我们经常要用外力来帮助我们做出选择

比如,课堂随机点名或面对活动需要人上台表演时等等场景

这个时候,有一个随机点名系统就非常好啦,毕竟运气得事~

都是天意,哈哈哈哈哈哈哈哈哈

效果展示

导入后,这里就显示你导入了多少人员信息

点击开始点名后,会随机从导入名字里挑选一位幸运儿~

好啦~效果大概就是这样啦,下面我们来看看代码吧

代码展示

导入模块

from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *from qdarkstyle import load_stylesheet_pyqt5import os
import sys
import time
import random

里面有第三方模块哦~是需要大家自己安装一下得哈

模块安装方法

  1. win + R 输入 cmd 点击确定, 输入安装命令 pip install 模块名 (pip install requests) 回车

  2. 在pycharm中点击Terminal(终端) 输入安装命令

class WorkThread(QThread):trigger = pyqtSignal(str)finished = pyqtSignal(bool)def __init__(self, parent=None):super(WorkThread, self).__init__(parent)self.parent = parentself.working = Truedef __del__(self):self.working = Falseself.wait()def run(self):data_list = self.parent.data_listif 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('课堂点名系统  更多资源可加Q群:261823976')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('信息提示 | 更多资源可加Q群:261823976')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)) + ']条人员信息')
    '''运行'''
if __name__ == '__main__':app = QApplication(sys.argv)app.setStyleSheet(load_stylesheet_pyqt5())main = ClassCollSystem()main.show()sys.exit(app.exec_())

推荐往期文章

🎯 博主所有文章素材、解答、源码、教程领取处:点击

对python感兴趣的小伙伴也可以看一下博主其他相关文章哦~

python小介绍:

python是什么?工作前景如何?怎么算有基础?爬数据违法嘛?。。

python数据分析前景:

用python分析“数据分析”到底值不值得学习,以及学完之后大概能拿到多少工资

python基础自测题:

Python 800 道习题 (°ー°〃) 测试你学废了嘛

最后推荐一套Python视频给大家,希望对大家有所帮助:

全套教程!你和大佬只有一步之遥【python教程】

尾语

要成功,先发疯,下定决心往前冲!

学习是需要长期坚持的,一步一个脚印地走向未来!

未来的你一定会感谢今天学习的你。

—— 心灵鸡汤

本文章到这里就结束啦~感兴趣的小伙伴可以复制代码去试试哦 😝

👇问题解答 · 源码获取 · 技术交流 · 抱团学习请联系👇

相关内容

热门资讯

前端-session、jwt 目录:   (1)session (2&#x...
linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
关于测试,我发现了哪些新大陆 关于测试 平常也只是听说过一些关于测试的术语,但并没有使用过测试工具。偶然看到编程老师...
前缀和与对数器与二分法 1. 前缀和 假设有一个数组,我们想大量频繁的去访问L到R这个区间的和,...
nodejs:本地安装nvm实... 一、背景-使用不同版本node的原因 vue3+ts、nuxt3版本,node...
JAVA集合知识整理 Java集合知识整理 HashMap相关 HashMap的底层数据结构:jdk1.8之...
无刷直流电机介绍及单片机控制实... 无刷直流电机介绍及单片机控制实例前言基本概念优势与劣势使用寿命基本结构使用单片机控制实例电子调速器&...
fwdiary(2) dp2 1.传纸条  AcWing 275. 传纸条 - AcWing 走两条路,走一条最大的...
常用的DOS命令 常用的DOS命令 DOS(Disk Operating System,磁...
<C++> 类和对象(下) 1.const成员函数将const修饰的“成员函数”称之为const成员函数,cons...