Python輕松寫個課堂隨機點名系統(tǒng)
起因
剛上大學的表弟問我,大學準備好好玩玩,問我有沒有什么不掛科的秘訣。
于是我連夜給表弟寫了一個課堂點名系統(tǒng),讓他給每個任課老師都送一遍,方便老師就是方便自己,嘿嘿~
準備工作
首先我們需要準備好點名的姓名文件,使用的時候?qū)脒M去就可以開始點名了。
新建一個文本文檔,將姓名設置設置好,如下:

使用系統(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)
點名功能實現(xià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('遍歷次數(shù):', 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('無數(shù)據(jù)')
頁面布局主要代碼
class ClassCollSystem(QWidget):
def __init__(self):
super(ClassCollSystem, self).__init__()
self.data_list = []
self.init_ui()
def init_ui(self):
'''子線程調(diào)用'''
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)
'''數(shù)據(jù)信息布局'''
vbox_data = QHBoxLayout()
self.message = QLabel()
self.message.setText('源碼自取君羊708525271')
self.message.setStyleSheet(
'font-size:12px;')
self.import_btn = QPushButton()
self.import_btn.setText('導入數(shù)據(jù)')
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)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Python3數(shù)據(jù)庫操作包pymysql的操作方法
這篇文章主要介紹了Python3數(shù)據(jù)庫操作包pymysql的操作方法,文章通過實例代碼相結(jié)合給大家介紹的非常詳細,需要的朋友可以參考下2018-07-07
python?matplotlib繪畫十一種常見數(shù)據(jù)分析圖
這篇文章主要介紹了python?matplotlib繪畫十一種常見數(shù)據(jù)分析圖,文章主要繪制折線圖、散點圖、直方圖、餅圖等需要的小伙伴可以參考一下文章具體內(nèi)容2022-06-06
Python Pickling 和 Unpickling 的區(qū)別
Python中的Pickling和Unpickling是與數(shù)據(jù)序列化和反序列化相關的重要概念,本文主要介紹了Python Pickling和Unpickling的區(qū)別,具有一定的參考價值,感興趣的可以了解一下2023-11-11

