• 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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

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

    模块安装方法

    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 = 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()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
        def init_ui(self):
            '''子线程调用'''
            self.thread_ = WorkThread(self)
            self.thread_.trigger.connect(self.set_name)
            self.thread_.finished.connect(self.finished)
    
    • 1
    • 2
    • 3
    • 4
    • 5
        '''应用初始化信息'''
    
    • 1
            self.setWindowTitle('课堂点名系统  更多资源可加Q群:261823976')
            self.setWindowIcon(QIcon('课堂点名.ico'))
            self.setFixedSize(500, 350)
    
    • 1
    • 2
    • 3
        '''姓名信息布局'''
    
    • 1
            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)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
        '''开始信息布局'''
    
    • 1
            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)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
        '''数据信息布局'''
    
    • 1
            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)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
        '''整体布局'''
    
    • 1
            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)) + ']条人员信息')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
        '''运行'''
    
    • 1
    if __name__ == '__main__':
        app = QApplication(sys.argv)
        app.setStyleSheet(load_stylesheet_pyqt5())
        main = ClassCollSystem()
        main.show()
        sys.exit(app.exec_())
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    推荐往期文章

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

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

    python小介绍:

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

    python数据分析前景:

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

    python基础自测题:

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

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

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

    尾语

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

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

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

    —— 心灵鸡汤

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

    👇问题解答 · 源码获取 · 技术交流 · 抱团学习请联系👇
  • 相关阅读:
    镜头品牌加入,激光电视迎来质变?
    【Lua】脚本入门
    N-128基于springboot,vue酒店管理系统
    深入理解 Python 虚拟机:集合(set)的实现原理及源码剖析
    JavaScript 在前端开发中有什么应用?
    TiDB的事务概览
    Python遥感影像叠加分析:基于一景数据提取另一数据
    Centos下自定义安装java环境以及环境变量配置
    新品发布:立仪科技发布嵌入式低功耗光谱共焦E系列
    材料空间「填空解谜」:MIT 利用深度学习解决无损检测难题
  • 原文地址:https://blog.csdn.net/python56123/article/details/128131561