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)文章
使用Python隨機(jī)生成數(shù)據(jù)的方法
這篇文章主要介紹了使用Python隨機(jī)生成數(shù)據(jù)的方法,在日常開發(fā)中竟然會(huì)遇到需要測(cè)試大量數(shù)據(jù)的地方,那么隨機(jī)生成數(shù)據(jù)就可以有效的加快我們的效率,通過Python_Faker生成測(cè)試數(shù)據(jù)需要安裝Faker包,需要的朋友可以參考下2023-10-10
Python3數(shù)據(jù)庫操作包pymysql的操作方法
這篇文章主要介紹了Python3數(shù)據(jù)庫操作包pymysql的操作方法,文章通過實(shí)例代碼相結(jié)合給大家介紹的非常詳細(xì),需要的朋友可以參考下2018-07-07
python?matplotlib繪畫十一種常見數(shù)據(jù)分析圖
這篇文章主要介紹了python?matplotlib繪畫十一種常見數(shù)據(jù)分析圖,文章主要繪制折線圖、散點(diǎn)圖、直方圖、餅圖等需要的小伙伴可以參考一下文章具體內(nèi)容2022-06-06
Python Pickling 和 Unpickling 的區(qū)別
Python中的Pickling和Unpickling是與數(shù)據(jù)序列化和反序列化相關(guān)的重要概念,本文主要介紹了Python Pickling和Unpickling的區(qū)別,具有一定的參考價(jià)值,感興趣的可以了解一下2023-11-11
Python+selenium破解拼圖驗(yàn)證碼的腳本
很多網(wǎng)站在登錄或者注冊(cè)時(shí)都會(huì)遇到拼圖驗(yàn)證碼,這種拼圖驗(yàn)證碼實(shí)際上是多個(gè)小碎片經(jīng)過重新組合成的一張整體。本文將和大家分享一個(gè)基于Python selenium的破解拼圖驗(yàn)證碼的腳本,需要的可以參考一下2022-02-02
Python中11種NumPy高級(jí)操作總結(jié)
熬夜整了了11種Numpy的高級(jí)操作,每一種都有參數(shù)解釋與小例子輔助說明。文中的示例代碼講解詳細(xì),感興趣的小伙伴快跟隨小編一起學(xué)習(xí)一下吧2022-05-05

