功能描述:对已有学生列表进行分组,结果一组一组的出现。
(类似于抽签分组
我为什么要做这个:
一个朋友需要组织一个比赛,需要将16人分为4组,但是主办方并不想要四组的结果同时出来。需要一组一组地显示出来。(何必嘞?
然鹅现在的小程序干脆利落直接把分好组的结果显示出来。
于是简单写了一下这个分组工具。后续优化自定义分组。
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()
import sys
import random
from PyQt5.QtWidgets import QMainWindow, QPushButton, QApplication, QLabel, QMessageBox
from PyQt5.QtWidgets import QDesktopWidget
from PyQt5.QtCore import Qt
class 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)
# 创建label
self.label_1 = QLabel(self)
self.label_1.move(100, 50)
self.label_1.resize(800, 50)
fz = " 分组情况
";
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 count
global list_fz
global members
global 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 = 0
members = ""
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 count
global list_fz
global members
global n
count += 1
if (count > n):
msg_box = QMessageBox(QMessageBox.Information, '错误', '您已分组完毕!!')
msg_box.exec_()
else:
members += '第' + str(count) + '组名单:'
for stu in list_fz[count - 1]:
members += stu
members += ' '
members += '\n'
membersShow = ""
+ members + "";
self.label_2.setText(membersShow)
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
可以在pycharm中的terminal中输入,也可以在文件目录下输入cmd进入命令行
pip install pyinstaller -i https://pypi.tuna.tsinghua.edu.cn/simple/
-F 是用于将所有的支持文件全部都打包在一起,不显示其他的依赖文件
-w 在程序运行的过程中隐藏后台控制的黑窗口
-n 指定可执行文件名
-i icon.ico 对将同目录下的icon.ico文件设置为执行文件图标
pyinstaller -w -F python文件名.py -i 图标名.ico
之前没有接触过PyQt,对python基础知识掌握的也不是很牢靠。做出的内容也很简单,没什么特别的思考。希望之后多多进步。