班级点名程序可以随机点名,并从表中找到学生的姓名

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()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

青龙摄影

你的鼓励是我创作的动力,支持下

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值