Python輕松寫個課堂隨機點名系統(tǒng)
更新時間:2023年01月03日 11:25:14 作者:輕松學Python
現在的學生大部分都很積極,會主動舉手回答問題。但是,也會遇到一些不好的情況,比如年級越高主動舉手的人越少,所以本文寫了一個隨機的學生點名系統(tǒng)可以幫老師解決這些問題
起因
剛上大學的表弟問我,大學準備好好玩玩,問我有沒有什么不掛科的秘訣。
于是我連夜給表弟寫了一個課堂點名系統(tǒng),讓他給每個任課老師都送一遍,方便老師就是方便自己,嘿嘿~
準備工作
首先我們需要準備好點名的姓名文件,使用的時候導入進去就可以開始點名了。
新建一個文本文檔,將姓名設置設置好,如下:
使用系統(tǒng)庫和第三方庫都比較常規(guī)
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
效果展示
恭喜麻辣香鍋喜提點名,盧姥爺不甘寂寞,出來兩次都沒點中,看來雀氏涼了~
代碼實戰(zhàn)
點名功能實現
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輕松寫個課堂隨機點名系統(tǒng)的文章就介紹到這了,更多相關Python課堂點名系統(tǒng)內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!