点名神器制作

今天来个简单的:点名神器

 


还是一样,我们用tkinter库和re库

#导入库中大部分功能
import re
from tkinter import *

下来创建个窗口

# 实例窗口
i=40
root = Tk()
root.title('点名神器')
root.geometry('600x400+50+50')
root.resizable(0, 0)

下来做出输入框

#姓名输入
L1 = Label(root, text='请输入姓名:', font=('黑体', 20))
L1.place(x=10, y=40)
entry = Entry(root, font=('黑体', 20), fg='pink')
entry.place(x=170, y=40)
#学号输入
L1 = Label(root, text='请输入学号:', font=('黑体', 20))
L1.place(x=10, y=100)
entry1 = Entry(root, font=('黑体', 20), fg='pink')
entry1.place(x=170, y=100)

接下来就是最费兄弟(手)的时候:

学生名单

这里我用的是字典:

#名单
dic_name = {
    '20220901': '致远',
    '20220902': '俊驰',
    '20220903': '雨泽',
    '20220904': '烨磊',
    '20220905': '晟睿',
    '20220906': '文昊',
    '20220907': '修洁',
    '20220908': '黎昕',
    '20220909': '远航',
    '20220910': '旭尧',
    '20220911': '鸿涛',
    '20220912': '伟祺',
    '20220913': '荣轩',
    '20220914': '越泽',
    '20220915': '浩宇',
    '20220916': '瑾瑜',
    '20220917': '皓轩',
    '20220918': '擎苍',
    '20220919': '擎宇',
    '20220920': '志泽',
    '20220921': '子轩',
    '20220922': '睿渊',
    '20220923': '弘文',
    '20220924': '哲瀚',
    '20220925': '雨泽',
    '20220926': '楷瑞',
    '20220927': '建辉',
    '20220928': '晋鹏',
    '20220929': '申蒙',
    '20220930': '天磊',
    '20220931': '绍辉',
    '20220932': '泽洋',
    '20220933': '鑫磊',
    '20220934': '鹏煊',
    '20220935': '昊强',
    '20220936': '伟宸',
    '20220937': '博超',
    '20220938': '君浩',
    '20220939': '子骞',
    '20220940': '鹏涛',

}

为什么要这样弄呢?

因为强迫症舒服。。。。


下来就是 最最最重要的时刻:

验证系统

我们先创建出两个空列表:

#学号名单
q=[]
#已签到
p=[]

将学号导入名单列表

我用的是遍历:

for k in dic_name:
    q.append(k)

下来就是识别身份了:

#识别身份
def name():
    #全局变量
    global i
    #获取输入的信息
    c=entry1.get()
    b=entry.get()
    zhpattern = re.compile(u'[\u4e00-\u9fa5]+')
    match = zhpattern.search(c)
    #判断是否输入完毕
    if b=='' or c=='':
        text.set('你还没输入学号或姓名哦!!!!')
    #判断格式是否正确
    elif match or b.isdigit() == True or len(c)!=8:
        text.set('格式错误!!请重新输入。。。')

    #判断是否在学号内
    elif c in q:
        a=dic_name[c]
    #判断此人是否已签到
        if a != b:
            text.set('信息不正确,请重新输入')

                #判断错误
        else:
            if a in p:
                text.set(f'{b}已签到')
            else:
                text.set(f'{b},签到成功')
                p.append(a)
                #未签到人数显示
                i=i-1
                text1.set(f'未签到人数:{i}')
            
    else:
        text.set('格式错误!!请重新输入。。。')
        #全员签到
    if i == 0:
        text.set('恭喜,全员到齐')
        text1.set('')

其作用看标签即可。。。。(偷个懒罢了)

下来:按钮坐标和对应函数

#签到按钮
B1 = Button(root, text='签到', font=('黑体', 25), command=name)
B1.place(x=470, y=70)
#文字显示
text = StringVar()
L2 = Label(root, textvariable=text, font=('黑体', 20))
L2.place(x=300, y=200, anchor=CENTER)
text.set('请输入姓名和学号')

最后我们还要显示未签到人数:

#人数显示
text1 = StringVar()
L2 = Label(root, textvariable=text1, font=('黑体', 20))
L2.place(x=300, y=300, anchor=CENTER)
text1.set(f'未签到人数:{i}')
root.mainloop()

就这么简单。。。。。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值