基于PyQt的分组工具

功能描述:对已有学生列表进行分组,结果一组一组的出现。

(类似于抽签分组

我为什么要做这个:

  • 一个朋友需要组织一个比赛,需要将16人分为4组,但是主办方并不想要四组的结果同时出来。需要一组一组地显示出来。(何必嘞?

  • 然鹅现在的小程序干脆利落直接把分好组的结果显示出来。

  • 于是简单写了一下这个分组工具。后续优化自定义分组。

  • 基于PyQt的分组工具
    • 一、分组核心代码编写
      • 1、代码
      • 2、运行结果
    • 二、GUI界面的分组代码编写
      • 1、代码
      • 2、运行结果
    • 三、将.py文件打包为.exe可执行文件
      • 1、下载pyinstaller
      • 2、打包
    • 四、总结

一、分组核心代码编写

1、代码

import random# 成员名单列表
list_stu = ["01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12", "13", "14", "15", "16"]
# 通过随机数函数将列表打乱排序
random.shuffle(list_stu)
n = 4  # 分成n组
m = int(len(list_stu) / n)  # 每组成员数
list_fz = []  # 创建分组列表
for i in range(0, len(list_stu), m):list_fz.append(list_stu[i:i + m])
# 循环遍历嵌套列表
for i in range(len(list_fz)):print("第%d组名单:" % (i + 1), end=" ")for stu in list_fz[i]:print(stu, end="  ")print()
print()

2、运行结果

二、GUI界面的分组代码编写

1、代码

import sys
import randomfrom PyQt5.QtWidgets import QMainWindow, QPushButton, QApplication, QLabel, QMessageBox
from PyQt5.QtWidgets import QDesktopWidget
from PyQt5.QtCore import Qtclass Example(QMainWindow):def __init__(self):super().__init__()self.initUI()def initUI(self):self.resize(1000, 500)# 设置标题self.setWindowTitle('分组工具')# 设置居中self.center()# 创建按钮btn1 = QPushButton("分组", self)btn1.move(450, 400)# 创建labelself.label_1 = QLabel(self)self.label_1.move(100, 50)self.label_1.resize(800, 50)fz = "<p style='line-height:50px; width:100% ; white-space: pre-wrap; font-size: 35px; '> 分组情况 </p>";self.label_1.setText(fz)self.label_1.setAlignment(Qt.AlignCenter)self.label_2 = QLabel(self)self.label_2.move(100, 100)self.label_2.resize(800, 250)# 定义全局变量global countglobal list_fzglobal membersglobal n# 分组# 学生名单列表list_stu = ["01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12", "13", "14", "15", "16"]# 通过随机数函数将列表打乱排序random.shuffle(list_stu)n = 4  # 分成n组m = int(len(list_stu) / n)  # 每组成员数list_fz = []  # 创建分组列表for i in range(0, len(list_stu), m):list_fz.append(list_stu[i:i + m])# 循环遍历嵌套列表for i in range(len(list_fz)):print("第%d组名单: " % (i + 1), end=" ")for stu in list_fz[i]:print(stu, end="  ")print()print()count = 0members = ""btn1.clicked.connect(self.buttonClicked)self.statusBar()self.show()def center(self):qr = self.frameGeometry()# 得到了主窗口大小cp = QDesktopWidget().availableGeometry().center()# 获取显示器的分辨率,然后得到中间点的位置qr.moveCenter(cp)# 然后把自己的窗口的中心点放到qr的中心点self.move(qr.topLeft())def buttonClicked(self):global countglobal list_fzglobal membersglobal ncount += 1if (count > n):msg_box = QMessageBox(QMessageBox.Information, '错误', '您已分组完毕!!')msg_box.exec_()else:members += '第' + str(count) + '组名单:'for stu in list_fz[count - 1]:members += stumembers += ' 'members += '\n'membersShow = "<p style='line-height:50px; width:100% ; white-space: pre-wrap; font-size: 25px;'>" + members + "</p>";self.label_2.setText(membersShow)app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())

2、运行结果

  • 点击分组开始分组,当分组结束再点击是弹出“分组完毕”的提示框。
  • 点击一下分组出一组名单。

三、将.py文件打包为.exe可执行文件

可以在pycharm中的terminal中输入,也可以在文件目录下输入cmd进入命令行

1、下载pyinstaller

pip install pyinstaller -i https://pypi.tuna.tsinghua.edu.cn/simple/

2、打包

-F 是用于将所有的支持文件全部都打包在一起,不显示其他的依赖文件

-w 在程序运行的过程中隐藏后台控制的黑窗口

-n 指定可执行文件名

-i icon.ico 对将同目录下的icon.ico文件设置为执行文件图标

 pyinstaller -w -F python文件名.py -i 图标名.ico

四、总结

之前没有接触过PyQt,对python基础知识掌握的也不是很牢靠。做出的内容也很简单,没什么特别的思考。希望之后多多进步。

基于PyQt的分组工具相关推荐

  1. 基于PYQT编写一个人脸识别软件(2)

    前言 以前在博客:基于PYQT编写一个人脸识别软件 中给出了我自己用PYQT编写的一个小软件.鉴于使用的是开源库--face_recogniton,尽管使用很简单,但是还有些问题,比如:识别黄种人时效 ...

  2. pyqt tcp通信_实验十 基于PyQt界面的TCP通信程序(一).doc_学小易找答案

    [简答题]请同学们找一个目前已学的知识点,出一个题目上传,不能是上课讲的程序和上机的题目 [简答题]请拍照模块五完成情况 [简答题]请拍照模块六完成情况 [计算题]书本80页,3-7;3-8;3-9; ...

  3. Xilinx基于模型的设计工具—Model Composer

    Model Composer 是一款基于模型的设计工具,不仅能够在 MathWorks Simulink® 环境中进行快速设计探索,而且还可通过自动代码生成加速基于 Xilinx 全可编程器件的生产. ...

  4. Java 调用http接口(基于OkHttp的Http工具类方法示例)

    目录 Java 调用http接口(基于OkHttp的Http工具类方法示例) OkHttp3 MAVEN依赖 Http get操作示例 Http Post操作示例 Http 超时控制 工具类示例 Ja ...

  5. 通过C#和Xamarin或JavaScript和基于VS的Cordova工具,VS平台上的开发者可以

    2019独角兽企业重金招聘Python工程师标准>>> 11月13日消息,微软刚刚宣布了 Visual Studio 2015和.Net 2015 预览版,并同时提供了下载. 微软在 ...

  6. [原创]基于frida的脱壳工具

    frida-unpack 基于Frida的脱壳工具 0x0 frida环境搭建 frida环境搭建,参考frida官网:frida. 0x2 原理说明 利用frida hook libart.so中的 ...

  7. 基于python的性能测试工具–locust

    基于python的性能测试工具–locust  https://www.cnblogs.com/chunyanxu/p/8732720.html 性能测试工具Locust https://www.cn ...

  8. Java生产环境下性能监控与调优详解 第2章 基于JDK命令行工具的监控

    Java生产环境下性能监控与调优详解 第2章 基于JDK命令行工具的监控 2-1 JVM的参数类型 标准参数 x参数 XX参数 2-2 查看JVM运行时参数 2-3 jstat查看JVM统计信息 2- ...

  9. 基于jedis的Redis工具类

    本文来记录下基于 jedis 的 Redis 工具类 文章目录 核心代码 核心代码 以下为核心代码 /*** 基于jedis的redis操作工具类* @author www* @time 2021/8 ...

最新文章

  1. 图像局部显著性—点特征(SIFT为例)
  2. sqlite字段是否存在_【漏洞预警】Linux内核存在本地提权漏洞(CVE20198912)
  3. opencv22-直方图均衡化
  4. C语言给定3x3矩阵旋转输出
  5. Docker学习总结(68)—— Docker 数据卷相关知识总结
  6. 【HDOJ】2809 God of War
  7. Mysql添加远程访问权限
  8. 安装百度库,C调用Python出错,卸载、再重装消失
  9. soapui脚本链接mysql_SOAPUI中文教程---脚本和脚本库
  10. Delphi2010Excel导入数据库
  11. 计算机考研专业课王道,王道论坛,专注于计算机考研的点点滴滴!
  12. python爬公众号文章_python爬取指定微信公众号文章
  13. 银联网关支付 java版
  14. 微波工程学习1-电磁理论
  15. c语言graphics下载,C语言_graphics.h
  16. 西电计算机学院硕士生导师马,西安电子科技大学计算机学院研究生导师简介-周端...
  17. Easy_CHM生成CHM时出现的目录和索引中文乱码脚本错误
  18. 手游SDK-数据上报
  19. 常数e怎么用计算机,自然常数e:原来是这么来的
  20. ubuntu下载安装google浏览器

热门文章

  1. 如何挑选属于自己的电脑
  2. kubernetes Pod Lifecycle生命周期与livenessProbe、 readinessProbe探测方法
  3. 恒流恒压线性充电芯片MST4210
  4. 从前有座山,山上有两台计算机
  5. Redis如何实现多可用区?
  6. Longest Commen Prefix
  7. Echart自适应图表大小和字体大小
  8. 【CozeTalk】关于“富人思维”
  9. 数字图像处理实验八图像的傅里叶变换
  10. 图片转pdf用什么软件好?图片转pdf软件哪个好?