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界面
總結
以上是生活随笔為你收集整理的python 抽签程序_抽签程序源码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OCR系列——总体概述
- 下一篇: bind1nd\bind2nd