最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于PyQT5制作一個(gè)課堂點(diǎn)名系統(tǒng)

 更新時(shí)間:2022年02月09日 08:38:45   作者:Python?集中營(yíng)  
這篇文章主要為大家介紹一個(gè)基于PyQt5實(shí)現(xiàn)的抖音同款課堂點(diǎn)名系統(tǒng),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起動(dòng)手試一試

刷抖音的時(shí)候發(fā)現(xiàn)一個(gè)老師在用的課堂點(diǎn)名系統(tǒng)。用PyQt5實(shí)現(xiàn)了一下同款,導(dǎo)入學(xué)生姓名,測(cè)試了一下完美運(yùn)行。

操作效果展示:

file

完整源代碼塊還是放在了文章的最后面

使用的時(shí)候準(zhǔn)備好學(xué)生姓名的文件,使用導(dǎo)入數(shù)據(jù)的按鈕直接導(dǎo)入就可以開始點(diǎn)名了。新建一個(gè)文本文檔,將姓名設(shè)置設(shè)置好,姓名文件示例如下。

file

使用系統(tǒng)庫(kù)或者第三方庫(kù)都比較常規(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  

為了和UI界面的主線程分離開來(lái),我們采用的還是QThread多線程的方式來(lái)實(shí)現(xiàn)隨機(jī)點(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('無(wú)數(shù)據(jù)')

UI 界面的實(shí)現(xiàn)部分也比較常規(guī),下面主要實(shí)現(xiàn)部分的代碼塊。

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('課堂點(diǎn)名系統(tǒng)  公眾號(hào):[Python 集中營(yí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('信息提示 | 公眾號(hào):[Python 集中營(yíng)]')
        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è)面加入主體循環(huán)直接運(yùn)行可以了。

完整代碼

# -*- coding:utf-8 -*-
# @author Python 集中營(yíng)
# @date 2022/1/18
# @file test5.py

# 抖音同款課堂點(diǎn)名系統(tǒng),PyQt5寫起來(lái)很簡(jiǎn)單...

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('遍歷次數(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('無(wú)數(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('課堂點(diǎn)名系統(tǒng)  公眾號(hào):[Python 集中營(yí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('信息提示 | 公眾號(hào):[Python 集中營(yíng)]')
        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)) + ']條人員信息')


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

以上就是基于PyQT5制作一個(gè)課堂點(diǎn)名系統(tǒng)的詳細(xì)內(nèi)容,更多關(guān)于PyQT5點(diǎn)名系統(tǒng)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • python制作可視化GUI界面自動(dòng)分類管理文件

    python制作可視化GUI界面自動(dòng)分類管理文件

    這篇文章主要為大家介紹了python制作可視化GUI界面實(shí)現(xiàn)自動(dòng)分類管理文件,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • python互斥鎖、加鎖、同步機(jī)制、異步通信知識(shí)總結(jié)

    python互斥鎖、加鎖、同步機(jī)制、異步通信知識(shí)總結(jié)

    本篇文章給大家詳細(xì)講述了python互斥鎖、加鎖、同步機(jī)制、異步通信相關(guān)知識(shí)點(diǎn),對(duì)此有興趣的朋友收藏下。
    2018-02-02
  • python爬蟲控制aiohttp并發(fā)數(shù)量方式

    python爬蟲控制aiohttp并發(fā)數(shù)量方式

    這篇文章主要介紹了python爬蟲控制aiohttp并發(fā)數(shù)量方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • 遠(yuǎn)程部署工具Fabric詳解(支持Python3)

    遠(yuǎn)程部署工具Fabric詳解(支持Python3)

    這篇文章主要介紹了遠(yuǎn)程部署神器 Fabric,支持Python3 ,Fabric 出場(chǎng)了。Fabric 是一個(gè)遠(yuǎn)程部署神器,它可以在本地執(zhí)行遠(yuǎn)程服務(wù)器的命令。,需要的朋友可以參考下
    2019-07-07
  • Python中的變量和作用域詳解

    Python中的變量和作用域詳解

    這篇文章主要介紹了Python中的變量和作用域詳解的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-07-07
  • 利用Python實(shí)現(xiàn)快速批量轉(zhuǎn)換HEIC文件

    利用Python實(shí)現(xiàn)快速批量轉(zhuǎn)換HEIC文件

    HEIC 是蘋果采用的新的默認(rèn)圖片格式,它能在不損失圖片畫質(zhì)的情況下,減少圖片大小。本篇文章將使用 Python 批量實(shí)現(xiàn) HEIC 圖片文件的格式轉(zhuǎn)換,需要的可以參考一下
    2022-07-07
  • python3之http.server模塊用法

    python3之http.server模塊用法

    這篇文章主要介紹了python3之http.server模塊用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,
    2023-09-09
  • scrapy頭部修改的方法詳解

    scrapy頭部修改的方法詳解

    這篇文章主要給大家介紹了關(guān)于scrapy頭部修改的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • Django中的Model操作表的實(shí)現(xiàn)

    Django中的Model操作表的實(shí)現(xiàn)

    這篇文章主要介紹了Django中的Model操作表的實(shí)現(xiàn),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    2018-07-07
  • PyQt5設(shè)置登錄界面及界面美化的實(shí)現(xiàn)

    PyQt5設(shè)置登錄界面及界面美化的實(shí)現(xiàn)

    這篇文章主要介紹了PyQt5設(shè)置登錄界面及界面美化的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03

最新評(píng)論

江西省| 靖西县| 桐乡市| 二连浩特市| 和硕县| 岳阳县| 舒城县| 安丘市| 阳曲县| 略阳县| 祥云县| 龙海市| 连南| 东台市| 桐城市| 新疆| 文山县| 徐州市| 双江| 尼勒克县| 延边| 女性| 莒南县| 鸡东县| 望城县| 扶余县| 唐河县| 芷江| 南安市| 革吉县| 和田市| 巫山县| 安岳县| 永善县| 顺平县| 襄垣县| 太仆寺旗| 寻乌县| 济阳县| 金阳县| 宜都市|