import tkinter as tk import time import re window = tk.Tk() window.title("班级点名程序") window.geometry('1150x700') content = '' btn_datas = [ ["", "随机抽奖2", "随机抽奖3", "随机抽奖4", "随机抽奖5", "随机抽奖2", "随机抽奖1", "重新开始"] ] def extract_numbers(text): numbers = re.findall(r'\d+', text) print(numbers) if len(numbers) >= 2: return int(numbers[0]) - 1, int(numbers[1]) - 1 return None def ran_cjf(): import random student_list = [] for r in range(1, 6): for c in range(1, 9): student_list.append(f"第{r}排第{c}位置") countdown = 5 result_label_text = "马上开始" def update_countdown(): nonlocal countdown, result_label_text if countdown > 0: result_label_text = f"倒计时:{countdown} 秒" result.set(result_label_text) countdown -= 1 window.after(1000, update_countdown) else: winner1 = random.sample(student_list, 1) print(winner1) numbers = re.findall(r'\d+', winner1[0]) print(numbers) if len(numbers) >= 2: i = int(numbers[0])-1 j = int(numbers[1])-1 if btn_datas[i][j] == '无人': ran_cjf() else: winner=btn_datas[i][j] print(winner) result.set(winner) update_countdown() def ran_cjc(): import random student_list = [] for r in range(1, 6): for c in range(1, 9): student_list.append(f"第{r}排第{c}位置") countdown = 5 result_label_text = "" def update_countdown(): nonlocal countdown, result_label_text if countdown > 0: result_label_text = f"倒计时:{countdown} 秒" result.set(result_label_text) countdown -= 1 window.after(1000, update_countdown) else: winner1 = random.sample(student_list, 2) winner=[] for w in range(2): numbers = re.findall(r'\d+', winner1[w]) print(numbers) if len(numbers) >= 2: i = int(numbers[0]) - 1 j = int(numbers[1]) - 1 if btn_datas[i][j] == '无人': continue else: winner.append(btn_datas[i][j]) print(winner) result.set(winner) update_countdown() def ran_cjs(): import random student_list = [] for r in range(1, 6): for c in range(1, 9): student_list.append(f"第{r}排第{c}位置") countdown = 5 result_label_text = "" def update_countdown(): nonlocal countdown, result_label_text if countdown > 0: result_label_text = f"倒计时:{countdown} 秒" result.set(result_label_text) countdown -= 1 window.after(1000, update_countdown) else: winner1 = random.sample(student_list, 3) winner = [] for w in range(3): numbers = re.findall(r'\d+', winner1[w]) print(numbers) if len(numbers) >= 2: i = int(numbers[0]) - 1 j = int(numbers[1]) - 1 if btn_datas[i][j] == '无人': continue else: winner.append(btn_datas[i][j]) print(winner) result.set(winner) update_countdown() def ran_cja(): import random student_list = [] for r in range(1, 6): for c in range(1, 9): student_list.append(f"第{r}排第{c}位置") countdown = 5 result_label_text = "" def update_countdown(): nonlocal countdown, result_label_text if countdown > 0: result_label_text = f"倒计时:{countdown} 秒" result.set(result_label_text) countdown -= 1 window.after(1000, update_countdown) else: winner1 = random.sample(student_list, 4) winner = [] for w in range(4): numbers = re.findall(r'\d+', winner1[w]) print(numbers) if len(numbers) >= 2: i = int(numbers[0]) - 1 j = int(numbers[1]) - 1 if btn_datas[i][j] == '无人': continue else: winner.append(btn_datas[i][j]) print(winner) result.set(winner) update_countdown() def ran_cjx(): import random student_list = [] for r in range(1, 6): for c in range(1, 9): student_list.append(f"第{r}排第{c}位置") countdown = 5 result_label_text = "" def update_countdown(): nonlocal countdown, result_label_text if countdown > 0: result_label_text = f"倒计时:{countdown} 秒" result.set(result_label_text) countdown -= 1 window.after(1000, update_countdown) else: winner1 = random.sample(student_list, 5) winner = [] for w in range(5): numbers = re.findall(r'\d+', winner1[w]) print(numbers) if len(numbers) >= 2: i = int(numbers[0]) - 1 j = int(numbers[1]) - 1 if btn_datas[i][j]=='无人': continue else: winner.append(btn_datas[i][j]) print(winner) result.set(winner) update_countdown() def btn_onclick(data): global content if data == "重新开始": expression.set('') result.set('') content = '' elif data == '随机抽奖1': ran_cjf() elif data == '随机抽奖2': ran_cjc() elif data == '随机抽奖3': ran_cjs() elif data == '随机抽奖4': ran_cja() elif data == '随机抽奖5': ran_cjx() else: content += data expression.set(content) # 定义更新时间显示的函数 def update_time(): current_time = time.strftime("%Y:%m:%d %H:%M:%S", time.localtime(time.time())) gettime.set(current_time) window.after(1000, update_time) # 每隔1秒调用自身来更新时间 for r in range(6): for c in range(8): btn_submit = tk.Button(window, text=btn_datas[r][c], font=("楷体", 15), command=lambda x=btn_datas[r][c]: btn_onclick(x)) btn_submit.place(x=c * 140 + 12, y=r * 60 + 260, width=140, height=50) frame = tk.Frame(window, bd=2, relief="sunken", background='#ffffff') frame.place(x=10, y=10, width=1130, height=60) expression = tk.StringVar() lable_express_text = tk.Label(frame, textvariable=expression, font=("楷体", 15,), background="red") lable_express_text.place(x=0, y=0, width=1130, height=60) lable_result_text = tk.Label(window, text="抽中学生位置:", font=("楷体", 15)) lable_result_text.place(x=0, y=100, width=150, height=30) result = tk.StringVar(value='不要心急呀,我还没有开始工作呢?') lable_result_content = tk.Label(window, textvariable=result, font=("楷体", 15), ) lable_result_content.place(x=150, y=100, width=1000, height=30) lable_time_text = tk.Label(window, text="您好,现在北京时间:", font=("楷体", 15), background='red') lable_time_text.place(x=0, y=200, width=360, height=30) gettime = tk.StringVar() lable_time = tk.Label(window, textvariable=gettime, font=("楷体", 15), background='red') lable_time.place(x=360, y=200, width=790, height=30) # 启动时间更新函数 update_time() window.mainloop()
07-27
767
