基于Python实现随机点名系统的示例代码
作者:Python技术 发布时间:2023-05-05 20:53:52
标签: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_())
来源:https://mp.weixin.qq.com/s/3QjlUL2Ky1AG6W0D--s_kQ


猜你喜欢
- 项目介绍:Golang100行代码实现高并发聊天室,其中实现的功能有:上下线广播,私聊,用户改名,超时强踢,在线用户检测等在开始项目前,我们
- 废话不多说了,具体代码如下所示:<html><head>< >function selectAll(){
- 附加数据库出错:无法打开物理文件 "XXXXXXXXXXXXX"。操作系统错误 5:"5(拒绝访问。)&quo
- 前段时间嗷嗷有发过"好玩的放大镜效果",今天看了下,发现还有简单的方法也能够实现,即利用内外补丁的调整。有兴趣的可以在琢
- 写在前面今天在用爬虫及Pandas更新股票日线数据的时候发现KeyError报错,后面跟了一个DataFrame列索引,一开始以为是索引修改
- 基本概念上一节提到,代码完成的标准之一还包含了单元测试,这部分也是很多开发流程中不规范的地方。写过单元测试的开发人员应该理解,单元测试最核心
- MYSQL在一个字段值前面加字符窜,如下:member 表名card 字段名update member SET card = '00
- 在VS2005装完后,会自带SQL Server2005 express版,为了便于管理,还需要安装一个企业管理器,需要下载 Microso
- 如何使用MsChart?MsChart是微软出品的一款功能强大的制作图表工具,用它可以很方便的建立各种图表。下面我们举例来说明:submit
- 按单字节计算字符串的长度,汉字算两个字节。<script type="text/JavaScript"
- <script language="javascript" src="js/sett
- 如何显示最后十名来访者?代码和说明见下:<%Application.LockIF NOT isArray(&nbs
- 本文实例讲述了python中argparse模块用法。分享给大家供大家参考。具体分析如下:平常在写命令行工具的时候,经常会带参数,所以用py
- 修改/etc/my.cnf或者/etc/mysql/my.cnf文件[client]default-character-set = utf8
- 数据共享是数据库最基本的特征之一。但是数据共享虽然为员工带来了便利,但也产生了一些负面作用。例如因用户并发存取而导致的对数据一致性的破坏、由
- 首先得有一个Scrapy项目,我在Desktop上新建一个Scrapy的项目叫test,在Desktop目录打开命令行,键入命令:scrap
- 本文实例为大家分享了原生js实现tab选项卡切换效果的代码,供大家参考,具体内容如下1.html部分<body> <div
- 本文介绍Python中的线程同步对象,主要涉及 thread 和 threading 模块。threading 模块提供的线程同步原语包括:
- 创建工程时,选择已存在的环境(不要选择虚拟环境,虽然安全,但很慢)添加环境在 anaconda3/bin/python3.6 即 d:/an
- 前言:处理图片需要,需把图片都转换成1920*1280的大小, python实现很方便,需要导入图片处理的Image包和匹配的glob包,很