当我把用Python做的课堂点名系统献给各科老师后,再也没挂过科

刚上大学的表弟问我,大学准备好好玩玩,问我有没有什么不挂科的秘诀。

哎,这可就问对人了,要想不挂科,先把老师贿赂好,当然,咱们说的贿赂不是送钱啥的,这不是侮辱老师吗?

于是我连夜给表弟写了一个课堂点名系统,让他给每个任课老师都送一遍,方便老师就是方便自己,嘿嘿~

当我把用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

 

效果展示

当我把用Python做的课堂点名系统献给各科老师后,再也没挂过科

恭喜麻辣香锅喜提点名,卢姥爷不甘寂寞,出来两次都没点中,看来雀氏凉了~

当我把用Python做的课堂点名系统献给各科老师后,再也没挂过科

代码实战

点名功能实现

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 自取就好了!

 

好了,今天的分享就到这里结束了,大家快去试试吧。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:当我把用Python做的课堂点名系统献给各科老师后,再也没挂过科 - Python技术站

(0)
上一篇 2023年4月2日
下一篇 2023年4月2日

相关文章

  • Python常用命名规范,让你的代码更加优雅!

    哈喽兄弟们,今天分享一下以前总结的一些Python常用命名规范,希望对大家有所帮助。 命名规范在编写代码中起到很重要的作用,虽然不遵循命名规范,程序也可以运行,但是使用命名规范可以更加直观地了解代码所代表的含义,本文将介绍Python中常用的一些命名规范。 常用命名规范 1、模块名尽量短小,并且全部使用小写字母,可以使用下划线。例如,game_main、ga…

    Python开发 2023年4月2日
    00
  • 重温Python基础——列表

    哈喽,兄弟们,今天让我们一起来重温一下Python基础中的列表,看看你还记得多少呢? 列表是什么 列表有一系列特定顺序排列的元素组成。可以包含字母表中的所有字母,数字等。其中的元素之间可以没有任何联系,列表通常包含多种元素。 在Python中用方括号([])表示列表,用逗号分隔其中的元素。 a=[‘wo’,’ai’,’xue’,’xi’,13,14]   访…

    Python开发 2023年4月2日
    00
  • 女同桌找我要表情包,还好我会Python,分分钟给她下载几十个G…

    emmm~ 起因呢,这昨晚女同桌跟我说电脑有点卡,喊我去宿舍给她装个新系统,装系统就装系统吧,结果又说新系统表情包都没保存~ 我当时就有点生气,真当我是万能的呢? 于是我直接就用Python给她爬了几十个G,完事扭头就走,任她怎么喊我也没用! 一、准备工作 使用的环境 python3.8 | Anaconda pycharm 使用的模块 requests 第…

    Python开发 2023年4月2日
    00
  • 重温Python基础——数

    哈喽,兄弟们,本文带大家来复习一下Python基础中的数。 在编程中,经常会使用到数。在一些计算题中,或者其他的可视化数据等。Python能够根据不同用法处理它们 1、整数 在Python中可对整数执行加减乘除运算(+ – * /),使用两个乘号表示乘方(**) a=3 b=4 print(a+b) print(a-b) print(a*b) print(a…

    Python开发 2023年4月2日
    00
  • 圣诞节快到了,教大家用Python画一个简单的圣诞树和烟花,送给那个她

    这不是圣诞节快到了,准备让让女朋友开心开心,也算是亲手做的,稍稍花了点心思。 话不多说,咱们直接来展示吧,学会了赶紧画给你的那个她吧! 本文分为两个大块,我们先来试试画圣诞树。 圣诞树 效果展示 代码展示 导入模块 import turtle as t from turtle import * import random as r import time  …

    Python开发 2023年4月2日
    00
  • 利用Python自动生成请假条

    哈喽兄弟们,今天咱们来实现用Python来批量生成请假条,这回既学了东西又做了事情,两不误~ 本文就将基于一个真实的办公案例进行讲解如何提取Excel内容并创建Word 主要将涉及以下三个知识点 openpyxl 读取 Excel 文件 python-docx 写入 Word 文件 python-docx 各类样式的设计和调整 需求描述 你是公司的底层小虾米…

    Python开发 2023年4月2日
    00
  • 用Python计算从1到500之间偶数的和

    兄弟们,今天来实现一下用Python计算1到500的偶数总和,灰常简单,检验一下大家基础学的怎么样! 涉及到的知识点 range 使用 for 循环 推导式 函数调用 # 这应该都学过吧,如果刚刚接触Python,基础都还没怎么学的话,加Q群 279199867,领取2022最新的Python视频教程、100本Python电子书、基础、爬虫、数据分析、web…

    Python开发 2023年4月2日
    00
  • Python输出指定时间间隔内的日期

    兄弟们,今天我们来试试用Python输出指定时间间隔内的日期~ 涉及知识点 文件读写 基础语法 字符串处理 循环遍历 代码展示 使用的模块 import platform import datetime # 我还给大家准备了这些资料:2022最新Python视频教程、Python电子书10个G(涵盖基础、爬虫、数据分析、web开发、机器学习、人工智能、面试题…

    Python开发 2023年4月2日
    00
合作推广
合作推广
分享本页
返回顶部