剛上大學的表弟問我,大學準備好好玩玩,問我有沒有什么不掛科的秘訣,
哎,這可就問對人了,要想不掛科,先把老師賄賂好,當然,咱們說的賄賂不是送錢啥的,這不是侮辱老師嗎?
于是我連夜給表弟寫了一個課堂點名系統,讓他給每個任課老師都送一遍,方便老師就是方便自己,嘿嘿~

準備作業
首先我們需要準備好點名的姓名檔案,使用的時候匯入進去就可以開始點名了,
新建一個文本檔案,將姓名設定設定好,如下:

使用系統庫和第三方庫都比較常規
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
效果展示

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

代碼實戰
點名功能實作
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,有時候不知道怎么學,從哪里開始學,掌握了基本的一些語法或者做了兩個案例后,不知道下一步怎么走,不知道如何去學習更加高深的知識, # 那么對于這些大兄弟們,我準備了大量的免費視頻教程,PDF電子書籍,以及本文源代碼! # 直接在這個君羊 708525271 自取就好了!
好了,今天的分享就到這里結束了,大家快去試試吧,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/540862.html
標籤:Python
