翼度科技»论坛 编程开发 python 查看内容

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

9

主题

9

帖子

27

积分

新手上路

Rank: 1

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

   准备工作

   首先我们需要准备好点名的姓名文件,使用的时候导入进去就可以开始点名了。
   新建一个文本文档,将姓名设置设置好,如下:
   

   使用系统库和第三方库都比较常规
   
  1. from PyQt5.QtWidgets import *
  2. from PyQt5.QtGui import *
  3. from PyQt5.QtCore import *
  4. from qdarkstyle import load_stylesheet_pyqt5
  5. import os
  6. import sys
  7. import time
  8. import random
复制代码
 
   效果展示

   

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

   代码实战

   点名功能实现
   
  1. class WorkThread(QThread):
  2.     trigger = pyqtSignal(str)
  3.     finished = pyqtSignal(bool)
  4.     def __init__(self, parent=None):
  5.         super(WorkThread, self).__init__(parent)
  6.         self.parent = parent
  7.         self.working = True
  8.     def __del__(self):
  9.         self.working = False
  10.         self.wait()
  11.     def run(self):
  12.         data_list = self.parent.data_list
  13.         if len(data_list) >= 1:
  14.             ran = random.randint(20, 40)
  15.             print('遍历次数:', ran)
  16.             for a in range(ran):
  17.                 name = random.choice(data_list)
  18.                 self.trigger.emit(name)
  19.                 print(name)
  20.                 time.sleep(0.6)
  21.             self.finished.emit(True)
  22.         else:
  23.             self.trigger.emit('无数据')
复制代码
  1. 页面布局主要代码
复制代码
  1. class ClassCollSystem(QWidget):
  2.     def __init__(self):
  3.         super(ClassCollSystem, self).__init__()
  4.         self.data_list = []
  5.         self.init_ui()
  6.     def init_ui(self):
  7.         '''子线程调用'''
  8.         self.thread_ = WorkThread(self)
  9.         self.thread_.trigger.connect(self.set_name)
  10.         self.thread_.finished.connect(self.finished)
  11.         '''应用初始化信息'''
  12.         self.setWindowTitle('源码自取君羊708525271 ')
  13.         self.setWindowIcon(QIcon('课堂点名.ico'))
  14.         self.setFixedSize(500, 350)
  15.         '''姓名信息布局'''
  16.         vbox_name = QVBoxLayout()
  17.         self.current_name = QLabel()
  18.         self.current_name.setText('随机点名啦')
  19.         self.current_name.setStyleSheet(
  20.             'font-size:50px;text-align:center;font-weight:bold;font-family:"Microsoft JhengHei";')
  21.         vbox_name.addWidget(self.current_name)
  22.         vbox_name.setAlignment(Qt.AlignCenter)
  23.         '''开始信息布局'''
  24.         vbox_start = QVBoxLayout()
  25.         self.start_btn = QPushButton()
  26.         self.start_btn.setText('开始点名')
  27.         self.start_btn.setFixedSize(160, 50)
  28.         self.start_btn.setStyleSheet(
  29.             'font-size:30px;font-weight:bold;text-align:center;font-family:"Microsoft JhengHei";')
  30.         self.start_btn.clicked.connect(self.start_btn_click)
  31.         vbox_start.addWidget(self.start_btn)
  32.         vbox_start.setAlignment(Qt.AlignCenter)
  33.         vbox_start.addSpacing(80)
  34.         '''数据信息布局'''
  35.         vbox_data = QHBoxLayout()
  36.         self.message = QLabel()
  37.         self.message.setText('源码自取君羊708525271')
  38.         self.message.setStyleSheet(
  39.             'font-size:12px;')
  40.         self.import_btn = QPushButton()
  41.         self.import_btn.setText('导入数据')
  42.         self.import_btn.setFixedSize(90, 25)
  43.         self.import_btn.clicked.connect(self.import_btn_click)
  44.         vbox_data.addWidget(self.message)
  45.         vbox_data.addStretch(1)
  46.         vbox_data.addWidget(self.import_btn)
  47.         '''整体布局'''
  48.         vbox = QVBoxLayout()
  49.         vbox.addLayout(vbox_name)
  50.         vbox.addLayout(vbox_start)
  51.         vbox.addLayout(vbox_data)
  52.         self.setLayout(vbox)
  53.     def start_btn_click(self):
  54.         if self.start_btn.text().strip() == '开始点名':
  55.             self.thread_.start()
  56.         else:
  57.             self.start_btn.setText('开始点名')
  58.     def set_name(self, name):
  59.         self.current_name.setText(name)
  60.     def finished(self, finished):
  61.         if finished is True:
  62.             self.start_btn.setText('就是你了')
  63.     def import_btn_click(self):
  64.         file = QFileDialog.getOpenFileName(self, '选择文件', os.getcwd(), 'Text File(*.txt)')
  65.         file_path = file[0]
  66.         print(file_path)
  67.         fl = open(str(file_path), 'r', encoding='utf-8')
  68.         self.data_list = fl.read().strip().split('\n')
  69.         print(self.data_list)
  70.         self.message.setText('信息提示 | 成功导入[' + str(len(self.data_list)) + ']条人员信息')
复制代码
 
   最后

  1. # 兄弟们学习python,有时候不知道怎么学,从哪里开始学。掌握了基本的一些语法或者做了两个案例后,不知道下一步怎么走,不知道如何去学习更加高深的知识。
  2. # 那么对于这些大兄弟们,我准备了大量的免费视频教程,PDF电子书籍,以及本文源代码!
  3. # 直接在这个君羊 708525271 自取就好了!
复制代码
 
好了,今天的分享就到这里结束了,大家快去试试吧。


来源:https://www.cnblogs.com/hahaa/p/17010232.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具