python 抽签程序_抽签程序源码

#教程读取excel文档https://blog.csdn.net/sinat_28576553/article/details/81275650

#教程oenpyxl读取excel文档https://www.cnblogs.com/BlueSkyyj/p/7571787.html

#pip install -i https://pypi.tuna.tsinghua.edu.cn/simple openpyxl #安装openpyxl,CMD需要以管理员身份运行

#教程tkinter使用https://blog.csdn.net/ahilll/article/details/81531587

import tkinter as tk #tkinter是python自带的图形开发库

import openpyxl #导入openpyxl库,本库可以修改excel的单元格内容。

import random

window = tk.Tk() #新建一个窗口

window.title("抽签") #窗口显示的名称

window.geometry('500x300') #窗口的分大小

displayword = tk.Label(window,text ='班级抽签程序',

bg = 'green', font = ('Arial',12),

width = 30,height = 2) #设置将要显示文本内容'班级抽签程序',

displayword.pack() #将文本显示在窗口中(由系统自动设置位置)

displayword1 = tk.Label(window,text ='班级选项:',

bg = 'green', font = ('Arial',12),

width = 30,height = 2)

displayword1.pack()

inputword = tk.Entry(window,show = None, font = ('Arial',14)) #设置一个单行输入框,输入选择的班级

inputword.pack()

displayword2 = tk.Label(window,text ='抽中次数上限:',

bg = 'green', font = ('Arial',12),

width = 30,height = 2) #设置将要显示文本内容'抽中次数上限:'

displayword2.pack()

inputword2 = tk.Entry(window,show = None, font = ('Arial',14)) #设置一个单行输入框,输入设定的选择次数上限

inputword2.pack()

displayword3 = tk.Label(window,text = "抽签结果",

bg = 'green', font = ('Arial',12),

width = 30,height = 2)#设置将要显示文本内容"抽签结果"

displayword3.pack()

print("1") #通过设置print函数,可以检测程序运行到哪段代码了。

workbook = openpyxl.load_workbook("名单.xlsx") #读取excel文"名单.xlsx"

#worksheet = workbook.worksheets[1] #通过工作簿顺序读取0为第一张表

sheetnames =str(workbook.sheetnames) #获取所有的工作簿名称,默认存储形式是list,数据类型需要修改为str

displayword1["text"] = '班级选项:'+ sheetnames #将displayword1显示内容修改为'班级选项:'+str(sheetnames)

print("2")

#在def定义函数之前,需要新建变量,函数内部新建的变量是局部变量,函数外面是全局变量(global).

sheetname =""

#cols = 0

#col = 0

rows = 0

row = 0

cv = ""#单元格的值

number = ""

runtimes = 0

name = ""

ID = ""

#定义函数,点击按钮以后触发的程序。

def click():

sheetname = inputword.get() #获取输入框内工作簿名称

worksheet = workbook[sheetname] #通过工作簿名称读取

#cols = worksheet.max_column #获取最大的列数

rows = worksheet.max_row #获取最大的行数

row = random.randint(2,rows) #获取随机一个行数

#col = random.randint(2,cols) #获取随机一个列数

cv = worksheet.cell(1,1).value #获取单元格第1行,第1列的值

number = worksheet.cell(row,3).value #获取第随机行,第3列单元格的值

numbers = int(inputword2.get()) #获取输入框内设定的上限,并转换为int型

#通过循环次数控制程序结果,缺点是可能漏掉,概率非常低,可以通过调整次数降低概率。

runtimes = 0

while runtimes <=5000:

if number <= numbers:

name = worksheet.cell(row,1).value #获取第随机行,第1列单元格的值,学生姓名

ID = str(worksheet.cell(row,2).value) #获取第随机行,第2列单元格的值,学生学号,并转换数据类型是str

number =number + 1 #学生被抽中次数加1

worksheet.cell(row,3,number) #将单元格row行,3列的值修改为number

#print(cv,name)

displayword3["text"] = name+ID #将displayword3显示的内容设置为抽中学生的姓名和学号

displayword3.pack()

break #跳出循环

else:

runtimes = runtimes + 1 #运行次数加1

row = random.randint(2,rows) #获取随机一个行数

#col = random.randint(2,cols) #获取随机一个列数

number = worksheet.cell(row,3).value #获取第随机行,第3列单元格的值

if runtimes >5000: #如果运行5000次都没有找到符合条件的学生

displayword3["text"] = "没有符合条件的同学" #将displayword3显示的内容设置为"没有符合条件的同学"

workbook.save("名单.xlsx") #保存工作表

b1 = tk.Button(window, text = '确认', width = 10,

height = 2, command = click) #设置按钮的参数

b1.pack()

#wait = input() #避免双击.py文件直接运行时程序退出。编辑状态时,input函数会导致程序无法显示tk界面

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值