from random import shuffle
import tkinter as tk
from PIL import Image,ImageTk
def get_image(filename,width,height):
im = Image.open(filename).resize((width,height))
return ImageTk.PhotoImage(im)
def grouping(group_out,num, n):
if num=='\n' or n == '\n': # 未填入内容
group_out.config(text="Let's grouping!")
else:
num = int(num)
n = int(n)
'''构造号码列表'''
list=[]
for i in range(num):
list.append(i+1)
'''重排序'''
shuffle(list)
'''先给每个组填相同的人数'''
m = int(len(list)/n)
list2 = []
for i in range(0, len(list), m):
list2.append(list[i:i+m])
# print(list2)
list3 = []
if num%n == 0:
list3 = list2
else:
'''处理剩余人数'''
for i in range(len(list2)-1):
list3.append(list2[i])
for j in range(len(list2[-1])):
list3[j].append(list2[-1][j])
# print(list3)
'''数组转为字符串'''
out_text=''
nn=1 # 组序号
for li in list3:
out_text += "第{0}组:".format(nn)
nn += 1
for i in li:
out_text+=str(i)
out_text+=','
out_text = out_text[:-1] # 去掉最后一个逗号
out_text+='\n'
# print(out_text)
group_out.config(text=out_text)
'''计算窗口居中的位置'''
def get_window_positon(window, width, height):
sw = window.winfo_screenwidth()
# 得到屏幕宽度
sh = window.winfo_screenheight()
# 得到屏幕高度
window_x_position = (sw - width) // 2
window_y_position = (sh - height) // 2
return window_x_position, window_y_position
def tk_show():
'''窗口'''
window = tk.Tk() # 窗口
window.title('Let\'s grouping')
tk_width = 600 # 窗口的宽度
tk_height = 400 # 窗口的长度
pos = get_window_positon(window,tk_width, tk_height) #调用get_window_positon()方法
window.geometry(f'{tk_width}x{tk_height}+{pos[0]}+{pos[1]}') # 窗口的大小与位置
window.resizable(False, False) # 窗口大小不可变
'''背景'''
cavas_root = tk.Canvas(window, width=tk_width, height=tk_height)
im_root = get_image("timg.jpg", width=tk_width, height=tk_height)
cavas_root.create_image(tk_width / 2, tk_height / 2, image=im_root)
cavas_root.pack()
'''标签'''
foo1 = "总人数:"
state = tk.Label(window, bg = 'white',width=15, height=1, font=15, text=foo1)
state.place(x=(tk_width-150)/2,y=10)
'''输入框'''
in_num = tk.Text(window, bg = 'white', width=15, height=1, bd=2, font=('KaiTi', 20))
in_num.place(x=(tk_width-210)/2,y=40)
'''标签'''
foo2 = "分组数:"
state = tk.Label(window, bg = 'white',width=15, height=1, font=15, text=foo2)
state.place(x=(tk_width-150)/2,y=90)
'''输入框'''
in_n = tk.Text(window, bg = 'white',width=15, height=1, bd=2, font=('KaiTi', 20))
in_n.place(x=(tk_width-210)/2,y=120)
'''输出框'''
group = "Let's grouping!"
group_out = tk.Label(window, bg = 'white',width=38, height=9, font=15, text=group)
group_out.place(x=(tk_width-380)/2,y=220)
'''按钮'''
btn0 = tk.Button(window, bg = 'gray',text='GROUPING', width=30, height=2, command=lambda : grouping(group_out,in_num.get("0.0","end"),
in_n.get("0.0","end")))
btn0.place(x=(tk_width-210)/2,y=170)
'''实时刷新'''
window.mainloop() # 窗口不断刷新
if __name__ == '__main__':
tk_show()
没有合适的资源?快使用搜索试试~ 我知道了~
Python编写的随机分组小程序
共3个文件
jpg:1个
bat:1个
py:1个
需积分: 48 24 下载量 34 浏览量
2021-03-18
11:18:05
上传
评论 1
收藏 11KB ZIP 举报
温馨提示
输入总人数N和分组数n,即可进行随机分组(如果N不是n的整数倍,则n个小组中的人数会不相同)
资源详情
资源评论
资源推荐
收起资源包目录
grouping.zip (3个子文件)
grouping
grouping.py 4KB
timg.jpg 10KB
start.bat 18B
共 3 条
- 1
Mr.Wanderer
- 粉丝: 44
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0