基于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
![](https://www.aspxhome.com/images/zang.png)
![](https://www.aspxhome.com/images/jiucuo.png)
猜你喜欢
- github主页导入:>>> from fuzzywuzzy import fuzz>>> from f
- 有些时候我们不得已要利用values来反向查询key,有没有简单的方法呢?下面我给大家列举一些方法,方便大家使用python3>>
- 对于刚刚学习编程的同学来说对编程是非常陌生的,对很多的代码也是非常陌生,高中忙于学习的我们甚至可以说是对编程是一无所知,进入大学进入到这个专
- 详解python中的文件与目录操作一 获得当前路径1、代码1>>>import os>>>print(&
- 在进行excel文件读取的时候,我自己设置了部分直接从公式获取单元格的值但是用之前的读取方法进行读取的时候,返回值为空import osim
- 随滚动条移动的DIV层js代码,无论你的滚动条到哪里这个DIV层就跟到哪里!代码中例举了五个方向的滚动div层例子:包括左上方的div,左下
- 一、1、图形显示图素法像素法图素法---矢量图:以图形对象为基本元素组成的图形,如矩形、 圆形像素法---标量图:以像素点为基本单位形成图形
- 前提1.python环境及tensorflow安装成功2.Anaconda安装好 ,Anaconda安装步骤安装步骤1.下载facenet,
- 1线性回归1.1简单线性回归在简单线性回归中,通过调整a和b的参数值,来拟合从x到y的线性关系。下图为进行拟合所需要优化的目标,也即是MES
- 本文实例讲述了python定时器(Timer)用法。分享给大家供大家参考。具体如下:# encoding: UTF-8import thre
- 1、使用del语句删除元素>>> i1 = ["a",'b','c',
- 很喜欢Python这门语言。在看过语法后学习了Django 这个 Web 开发框架。算是对 Python 有些熟悉了。不过对里面很多东西还是
- 我们在用Python进行机器学习建模项目的时候,每个人都会有自己的一套项目文件管理的习惯,我自己也有一套方法,是自己曾经踩过的坑总结出来的,
- 一般TensorFlow中扩展维度可以使用tf.expand_dims()。近来发现另一种可以直接运用取数据操作符[]就能扩展维度的方法。用
- 今天安装了几个模块,在cmd测试都正常,但是在pycharm就不行,后面试了以下方法:1、2、3、选择python.exe4、然后在回到se
- 需要建立2个文件,一个作为客户端,一个作为服务端文件一 作为客户端client,文件二作为服务端serverudp的特点是不需要建立连接文件
- 导语哈喽!大家晚上好,我是木木子吖,很久没给大家更新游戏代码的类型啦~骰子,是现在娱乐场所最常见的一种玩乐项目。一般骰子分两人和两人以上玩,
- 引言最近在技术交流群里聊到一个关于图像文字识别的需求,在工作、生活中常常会用到,比如票据、漫画、扫描件、照片的文本提取。博主基于 PyQt
- Python获取电脑截图有多种方式,具体如下:PIL中的ImageGrab模块windows APIPyQtpyautoguiPIL中的Im
- 最近经常遇到xmlHttp组件的问题, 今天终于有空将解决过程中的经验整理下来了! ^o^一、在运用xmlhttp组件编