溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

基于Python怎么實現(xiàn)隨機(jī)點(diǎn)名系統(tǒng)

發(fā)布時間:2023-04-07 11:49:33 來源:億速云 閱讀:272 作者:iii 欄目:開發(fā)技術(shù)

本文小編為大家詳細(xì)介紹“基于Python怎么實現(xiàn)隨機(jī)點(diǎn)名系統(tǒng)”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“基于Python怎么實現(xiàn)隨機(jī)點(diǎn)名系統(tǒng)”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學(xué)習(xí)新知識吧。

效果展示

基于Python怎么實現(xiàn)隨機(jī)點(diǎn)名系統(tǒng)

創(chuàng)建一個這樣的文件夾,然后把要隨機(jī)點(diǎn)名的名字寫在里面

基于Python怎么實現(xiàn)隨機(jī)點(diǎn)名系統(tǒng)

導(dǎo)入后,這里就顯示你導(dǎo)入了多少人員信息

點(diǎn)擊開始點(diǎn)名后,會隨機(jī)從導(dǎo)入名字里挑選一位幸運(yùn)兒~

基于Python怎么實現(xiàn)隨機(jī)點(diǎn)名系統(tǒng)

效果大概就是這樣,下面我們來看看代碼吧

代碼展示

導(dǎo)入模塊

里面有第三方模塊,需要大家自己安裝一下

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(6, 10)
            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()

子線程調(diào)用

    def init_ui(self):
        self.thread_ = WorkThread(self)
        self.thread_.trigger.connect(self.set_name)
        self.thread_.finished.connect(self.finished)

應(yīng)用初始化信息

        self.setWindowTitle('課堂點(diǎn)名系統(tǒng)')
        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('信息提示')
        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)) + ']條人員信息')

運(yùn)行

if __name__ == '__main__':
    app = QApplication(sys.argv)
    app.setStyleSheet(load_stylesheet_pyqt5())
    main = ClassCollSystem()
    main.show()
    sys.exit(app.exec_())

讀到這里,這篇“基于Python怎么實現(xiàn)隨機(jī)點(diǎn)名系統(tǒng)”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識點(diǎn)還需要大家自己動手實踐使用過才能領(lǐng)會,如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI