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

使用系統(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
效果展示

恭喜麻辣香鍋喜提點(diǎn)名,盧姥爺不甘寂寞,出來兩次都沒點(diǎn)中,看來雀氏涼了~

代碼實(shí)戰(zhàn)
點(diǎn)名功能實(shí)現(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)
'''應(yīng)用初始化信息'''
self.setWindowTitle('源碼自取君羊708525271 ')
self.setWindowIcon(QIcon('課堂點(diǎn)名.ico'))
self.setFixedSize(500, 350)
'''姓名信息布局'''
vbox_name = QVBoxLayout()
self.current_name = QLabel()
self.current_name.setText('隨機(jī)點(diǎn)名啦')
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('開始點(diǎn)名')
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('導(dǎo)入數(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() == '開始點(diǎn)名':
self.thread_.start()
else:
self.start_btn.setText('開始點(diǎn)名')
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('信息提示 | 成功導(dǎo)入[' + str(len(self.data_list)) + ']條人員信息')
到此這篇關(guān)于Python輕松寫個(gè)課堂隨機(jī)點(diǎn)名系統(tǒng)的文章就介紹到這了,更多相關(guān)Python課堂點(diǎn)名系統(tǒng)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 基于Python實(shí)現(xiàn)簡(jiǎn)單的學(xué)生點(diǎn)名系統(tǒng)
- 基于Python編寫一個(gè)點(diǎn)名器的示例代碼
- Python寫一個(gè)簡(jiǎn)單上課點(diǎn)名系統(tǒng)(附源碼)
- python實(shí)戰(zhàn)練習(xí)做一個(gè)隨機(jī)點(diǎn)名的程序
- Python實(shí)現(xiàn)上課點(diǎn)名器系統(tǒng)
- 一起用Python做個(gè)上課點(diǎn)名器的制作過程
- python用tkinter實(shí)現(xiàn)一個(gè)簡(jiǎn)易能進(jìn)行隨機(jī)點(diǎn)名的界面
- 基于python tkinter的點(diǎn)名小程序功能的實(shí)例代碼
- python寫一個(gè)隨機(jī)點(diǎn)名軟件的實(shí)例
相關(guān)文章
詳解10個(gè)可以快速用Python進(jìn)行數(shù)據(jù)分析的小技巧
這篇文章主要介紹了詳解10個(gè)可以快速用Python進(jìn)行數(shù)據(jù)分析的小技巧,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06
python 字典(dict)遍歷的四種方法性能測(cè)試報(bào)告
本文主要是針對(duì)Python的字典dict遍歷的4種方法進(jìn)行了性能測(cè)試,以便分析得出效率最高的一種方法2014-06-06
Python用20行代碼實(shí)現(xiàn)批量摳圖功能
在日常的工作和生活中,我們經(jīng)常會(huì)遇到需要摳圖的場(chǎng)景,即便是只有一張圖片需要摳,也會(huì)摳得我們不耐煩。本文將為大家分享一個(gè)20行代碼就能實(shí)現(xiàn)是批量摳圖,需要的可以參考一下2022-05-05
在Tensorflow中查看權(quán)重的實(shí)現(xiàn)
今天小編就為大家分享一篇在Tensorflow中查看權(quán)重的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-01-01
Python3 JSON 數(shù)據(jù)解析及日期和時(shí)間小結(jié)
這篇文章主要介紹了Python3 JSON 數(shù)據(jù)解析及日期和時(shí)間,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-02-02
Python判斷dict中key是否存在的3種方法實(shí)例
大家在學(xué)會(huì)python中的字典,會(huì)發(fā)現(xiàn),字典中是沒有特殊順序的,但是都存儲(chǔ)在一個(gè)特定的key下面,下面這篇文章主要給大家介紹了關(guān)于Python判斷dict中key是否存在的3種方法,需要的朋友可以參考下2022-04-04
基于Tensorflow批量數(shù)據(jù)的輸入實(shí)現(xiàn)方式
今天小編就為大家分享一篇基于Tensorflow批量數(shù)據(jù)的輸入實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-02-02

