iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python轻松写个课堂随机点名系统
  • 940
分享到

Python轻松写个课堂随机点名系统

Python课堂点名系统Python点名系统 2023-01-03 12:01:38 940人浏览 泡泡鱼

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课堂点名系统内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Python轻松写个课堂随机点名系统

本文链接: https://www.lsjlt.com/news/176491.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作