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自帶的圖形開發(fā)庫
import openpyxl #導(dǎo)入openpyxl庫,本庫可以修改excel的單元格內(nèi)容。
import random
window = tk.Tk() #新建一個窗口
window.title("抽簽") #窗口顯示的名稱
window.geometry('500x300') #窗口的分大小
displayword = tk.Label(window,text ='班級抽簽程序',
bg = 'green', font = ('Arial',12),
width = 30,height = 2) #設(shè)置將要顯示文本內(nèi)容'班級抽簽程序',
displayword.pack() #將文本顯示在窗口中(由系統(tǒng)自動設(shè)置位置)
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)) #設(shè)置一個單行輸入框,輸入選擇的班級
inputword.pack()
displayword2 = tk.Label(window,text ='抽中次數(shù)上限:',
bg = 'green', font = ('Arial',12),
width = 30,height = 2) #設(shè)置將要顯示文本內(nèi)容'抽中次數(shù)上限:'
displayword2.pack()
inputword2 = tk.Entry(window,show = None, font = ('Arial',14)) #設(shè)置一個單行輸入框,輸入設(shè)定的選擇次數(shù)上限
inputword2.pack()
displayword3 = tk.Label(window,text = "抽簽結(jié)果",
bg = 'green', font = ('Arial',12),
width = 30,height = 2)#設(shè)置將要顯示文本內(nèi)容"抽簽結(jié)果"
displayword3.pack()
print("1") #通過設(shè)置print函數(shù),可以檢測程序運行到哪段代碼了。
workbook = openpyxl.load_workbook("名單.xlsx") #讀取excel文"名單.xlsx"
#worksheet = workbook.worksheets[1] #通過工作簿順序讀取0為第一張表
sheetnames =str(workbook.sheetnames) #獲取所有的工作簿名稱,默認(rèn)存儲形式是list,數(shù)據(jù)類型需要修改為str
displayword1["text"] = '班級選項:'+ sheetnames #將displayword1顯示內(nèi)容修改為'班級選項:'+str(sheetnames)
print("2")
#在def定義函數(shù)之前,需要新建變量,函數(shù)內(nèi)部新建的變量是局部變量,函數(shù)外面是全局變量(global).
sheetname =""
#cols = 0
#col = 0
rows = 0
row = 0
cv = ""#單元格的值
number = ""
runtimes = 0
name = ""
ID = ""
#定義函數(shù),點擊按鈕以后觸發(fā)的程序。
def click():
sheetname = inputword.get() #獲取輸入框內(nèi)工作簿名稱
worksheet = workbook[sheetname] #通過工作簿名稱讀取
#cols = worksheet.max_column #獲取最大的列數(shù)
rows = worksheet.max_row #獲取最大的行數(shù)
row = random.randint(2,rows) #獲取隨機一個行數(shù)
#col = random.randint(2,cols) #獲取隨機一個列數(shù)
cv = worksheet.cell(1,1).value #獲取單元格第1行,第1列的值
number = worksheet.cell(row,3).value #獲取第隨機行,第3列單元格的值
numbers = int(inputword2.get()) #獲取輸入框內(nèi)設(shè)定的上限,并轉(zhuǎn)換為int型
#通過循環(huán)次數(shù)控制程序結(jié)果,缺點是可能漏掉,概率非常低,可以通過調(diào)整次數(shù)降低概率。
runtimes = 0
while runtimes <=5000:
if number <= numbers:
name = worksheet.cell(row,1).value #獲取第隨機行,第1列單元格的值,學(xué)生姓名
ID = str(worksheet.cell(row,2).value) #獲取第隨機行,第2列單元格的值,學(xué)生學(xué)號,并轉(zhuǎn)換數(shù)據(jù)類型是str
number =number + 1 #學(xué)生被抽中次數(shù)加1
worksheet.cell(row,3,number) #將單元格row行,3列的值修改為number
#print(cv,name)
displayword3["text"] = name+ID #將displayword3顯示的內(nèi)容設(shè)置為抽中學(xué)生的姓名和學(xué)號
displayword3.pack()
break #跳出循環(huán)
else:
runtimes = runtimes + 1 #運行次數(shù)加1
row = random.randint(2,rows) #獲取隨機一個行數(shù)
#col = random.randint(2,cols) #獲取隨機一個列數(shù)
number = worksheet.cell(row,3).value #獲取第隨機行,第3列單元格的值
if runtimes >5000: #如果運行5000次都沒有找到符合條件的學(xué)生
displayword3["text"] = "沒有符合條件的同學(xué)" #將displayword3顯示的內(nèi)容設(shè)置為"沒有符合條件的同學(xué)"
workbook.save("名單.xlsx") #保存工作表
b1 = tk.Button(window, text = '確認(rèn)', width = 10,
height = 2, command = click) #設(shè)置按鈕的參數(shù)
b1.pack()
#wait = input() #避免雙擊.py文件直接運行時程序退出。編輯狀態(tài)時,input函數(shù)會導(dǎo)致程序無法顯示tk界面
總結(jié)
以上是生活随笔為你收集整理的python 抽签程序_抽签程序源码的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OCR系列——总体概述
- 下一篇: python中pillow库怎么使用_P