简单数字验证码验证程序

       这是一个使用Python的tkinter库创建的动态验证码验证程序。程序中定义了三个函数:setgif()用于生成随机验证码图片,showp()用于显示验证码图片,dupass()用于检查用户输入的验证码是否正确。程序界面包括一个标题为"动态验证码"的窗口,一个显示验证码图片的标签,一个输入框用于用户输入验证码,以及三个按钮分别用于换一张验证码、确认和退出。

  1. 导入必要的模块:

    • Tkinter:用于创建图形用户界面。
    • messagebox:用于显示消息框。
    • random:用于生成随机数。
  2. 创建主窗口:

    • root = Tk() 创建了一个Tkinter窗口实例。
  3. 定义验证码图片和验证码对应的密码:

    • gif:包含验证码图片文件名的列表。
    • note:包含与验证码图片对应的密码的列表。
  4. 定义函数:

    • setgif():设置要显示的验证码图片和相关参数。
    • showp(x):显示验证码图片的某帧,并在一定时间后显示下一帧。
    • dupass():验证用户输入的密码是否正确,并给出相应的提示。
    • close():关闭程序。
  5. 设置窗口属性和布局:

    • 设置窗口标题、始终在最前、大小等属性。
    • 创建标签、输入框和按钮,并设置它们在窗口中的位置。
  6. 定义全局变量:

    • many:用于存储当前验证码的索引。
    • maxp:用于存储验证码图片的帧数。
    • ranima:存储当前验证码图片的完整路径。
    • frames:存储验证码图片的每一帧。
  7. 主循环:

    • setgif() 初始化验证码显示。
    • root.mainloop() 进入Tkinter事件循环,等待用户操作。

这个程序可以作为一个简单的示例来演示如何使用Tkinter创建带有动态验证码的GUI程序。然而,实际应用中,验证码系统会更加复杂,包括但不限于验证码的生成、安全性、错误处理等方面。

from tkinter import *
from tkinter.messagebox import *
import random
root = Tk()
gif=["验证码0","验证码1","验证码2","验证码3","验证码4","验证码5","验证码6","验证码7","验证码8","验证码9","验证码10","验证码11","验证码12"]
note=["36uad","eun2p","tqy19","1tt8i","1gria","4gsah","2q6gy","2gnf7","q4q1y","5qhi6","1ferh","wtyiq2","5ttyi"]
def setgif():
    global many
    global maxp
    global ranima
    global frames
    many = random.randint(0, len(gif) - 1)
    ranima = './cap/' + gif[many] + '.gif'

    maxp = 6
    frames = [PhotoImage(file=ranima, format='gif -index %i' % (i)) for i in range(maxp)]
    showp(0)


def showp(x):
    global maxp
    global frames
    frame = frames[x]
    x += 1
    label = Label(root, image=frame, height=23).grid(column=2, row=1)
    root.after(800, showp, x % maxp)


def dupass():
    global many
    if str(note[many]).lower() == m_str_var.get().strip("").lower():
        warn = showwarning(title='动态验证码', message='验证通过,将退出系统!')
        root.destroy()
    else:
        warn = showwarning(title='动态验证码', message='验证码不正确,请重新输入!')
        setgif()


def close():
    root.destroy()
root.title('动态验证码')
root.wm_attributes('-topmost', 1)
root.geometry('400x110')

image1 = PhotoImage(file='sport.png')
add = Label(root,text='新增会员',image=image1).grid(column=0, row=0)
explain = Label(root,text='请输入验证码:').grid(column=0, row=1)
m_str_var = StringVar()
cap=Entry(text='0',textvariable=m_str_var,width=10).grid(column=1, row=1)

actre = Button(root,text="换一张", relief=FLAT, command=setgif,width=10)
actre.grid(column=3, row=1)

actis = Button(root, text="确认", command=dupass,width=10)
actis.grid(column=2, row=2)
actend = Button(root, text="退出", command=close,width=10)
actend.grid(column=3, row=2)
setgif()
root.mainloop()

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值