羊蹓狼 发表于 2022-12-28 16:03:19

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

刚上大学的表弟问我,大学准备好好玩玩,问我有没有什么不挂科的秘诀。
哎,这可就问对人了,要想不挂科,先把老师贿赂好,当然,咱们说的贿赂不是送钱啥的,这不是侮辱老师吗?
于是我连夜给表弟写了一个课堂点名系统,让他给每个任课老师都送一遍,方便老师就是方便自己,嘿嘿~
https://img-blog.csdnimg.cn/c60ec15a070444e19f86856b92c5b5c4.png
准备工作

首先我们需要准备好点名的姓名文件,使用的时候导入进去就可以开始点名了。
新建一个文本文档,将姓名设置设置好,如下:
https://img-blog.csdnimg.cn/0c71c0595be94e8a9137c3d4c00becb6.png
使用系统库和第三方库都比较常规
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 
效果展示

https://img-blog.csdnimg.cn/13f4320daec54be28288261ce4e5db17.png
恭喜麻辣香锅喜提点名,卢姥爷不甘寂寞,出来两次都没点中,看来雀氏凉了~
https://img-blog.csdnimg.cn/8bfcb75644584fd091cbd07f4bebad6a.png
代码实战

点名功能实现
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
      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 自取就好了! 
好了,今天的分享就到这里结束了,大家快去试试吧。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: 当我把用Python做的课堂点名系统献给各科老师后,再也没挂过科