我的编程空间,编程开发者的网络收藏夹
学习永远不晚

基于Python实现随机点名系统的示例代码

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

基于Python实现随机点名系统的示例代码

 大家好,我是了不起!

在某些难以抉择得时候,我们经常要用外力来帮助我们做出选择

比如,梁山出征方腊前沙场点兵,挑选先锋的场景

这个时候,有一个随机点名系统就非常好啦,毕竟我水泊梁山的名号~

效果展示

创建一个这样的文件夹,然后把要随机点名的名字写在里面

导入后,这里就显示你导入了多少人员信息

点击开始点名后,会随机从导入名字里挑选一位幸运儿~

效果大概就是这样,下面我们来看看代码吧

代码展示

导入模块

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

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('遍历次数:', 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('课堂点名系统')
        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('信息提示')
        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)) + ']条人员信息')

运行

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

到此这篇关于基于Python实现随机点名系统的示例代码的文章就介绍到这了,更多相关Python随机点名内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

基于Python实现随机点名系统的示例代码

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

基于Python实现随机点名系统的示例代码

在某些难以抉择得时候,我们经常要用外力来帮助我们做出选择,比如,梁山出征方腊前沙场点兵,挑选先锋的场景。所以本文就来用Python做个随机点名系统吧,需要的可以参考一下
2023-05-14

基于Python实现24点游戏的示例代码

这篇文章主要为大家详细介绍了如何利用Python实现24点游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
2022-12-08

Python实现随机生成算术题的示例代码

这篇文章主要为大家详细介绍了如何利用Python实现随机生成算术题的功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
2023-05-14

基于Python实现录音功能的示例代码

今天我们来介绍一个好玩且实用的东西,我们使用python来实现一个录音的功能。文中的示例代码简洁易懂,感兴趣的小伙伴快跟随小编一起学习一下吧
2023-02-07

基于Python实现格斗小游戏的示例代码

格斗游戏,曾经是街机厅里最火爆的游戏之一,甚至可以把“之一”去掉,那个年代的格斗游戏就是街机游戏的王。本文就来用Python实现一个简单的格斗游戏,感兴趣的可以了解一下
2023-03-02

基于Python实现文件分类器的示例代码

这篇文章主要为大家详细介绍了如何基于Python实现文件分类器,目的主要是为了将办公过程中产生的各种格式的文件完成整理,感兴趣的可以了解一下
2023-05-14

快速实现基于Python的微信聊天机器人示例代码

最近听说一个很好玩的图灵机器人api,正好可以用它做一个微信聊天机器人,下面是实现# test.pyimport requests import itchat #这是一个用于微信回复的库KEY = '8edce3ce905a4c1dbb96
2022-06-04

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录