python-产品篇-图形验证码

news2024/11/15 21:50:40

文章目录

  • 准备
  • 代码
  • 效果

准备

在这里插入图片描述

代码


from tkinter import *
from tkinter.messagebox import *
import time
import os
root = Tk()
import random
dirall=[]
randima =[]

def call():
    global  image1
    global  image2
    global  image3
    global  image4
    global  image5
    global  selone
    global  seltwo
    dirall.clear()
    randima.clear()
    for dirs in os.walk('./test/'):
        dirall.append(dirs)
    secdir=dirall[0][1]
    luckima=random.choice(secdir)
    secdir.remove(luckima)
    decdir=luckima
    filelist=os.listdir('./test/'+decdir)
    selone = random.choice(filelist)
    randima.append(decdir+'/'+selone)
    filelist.remove(selone)
    seltwo =  random.choice(filelist)
    randima.append(decdir+'/'+seltwo)
    for i in range(3):
       randdir=random.choice(secdir)
       randfile=os.listdir('./test/'+randdir)
       randima.append(randdir+'/'+random.choice(randfile))
       secdir.remove(randdir)
    random.shuffle(randima)
 
    title=Label(root, text="所有的"+luckima).grid(column=1, row=0) 
    image1 = PhotoImage(file='test/'+randima[0])
    image2 = PhotoImage(file='test/'+randima[1])
    image3 = PhotoImage(file='test/'+randima[2])
    image4 = PhotoImage(file='test/'+randima[3])
    image5 = PhotoImage(file='test/'+randima[4])
    label = Label(root,image=image1).grid(column=0, row=1) 
    labe2 = Label(root,image=image2).grid(column=1, row=1) 
    labe3 = Label(root,image=image3).grid(column=2, row=1) 
    labe4 = Label(root,image=image4).grid(column=3, row=1) 
    labe5 = Label(root,image=image5).grid(column=4, row=1) 
def defcheck():
    cvar1.set(0)
    cvar2.set(0)
    cvar3.set(0)
    cvar4.set(0)
    cvar5.set(0)
def test():
    count=0
    if cvar1.get()==1:
        if selone not in randima[0] and seltwo not in randima[0]:
            warn=showwarning(title='图形验证码', message ='验证失败,请重新验证!' )
            count=20            
            call()
        else:
            count +=1
    if cvar2.get()==1 and count!=20:
        if selone not in randima[1] and seltwo not in randima[1]:
            warn=showwarning(title='图形验证码', message ='验证失败,请重新验证!' )
            count=20
            call()
        else:
            count+=1
    if cvar3.get()==1 and count!=20:
        if selone not in randima[2] and seltwo not in randima[2]:
            warn=showwarning(title='图形验证码', message ='验证失败,请重新验证!' )
            count=20
            call()
        else:
            count+=1
    if cvar4.get()==1 and count!=20:
        if selone not in randima[3] and seltwo not in randima[3]:
            warn=showwarning(title='图形验证码', message ='验证失败,请重新验证!' )
            count=20
            call()
        else:
            count +=1

    if cvar5.get()==1 and count!=20:
        if selone not in randima[4] and seltwo not in randima[4]:
            warn=showwarning(title='图形验证码', message ='验证失败,请重新验证!' )
            count=20
            call()
        else:
            count +=1
    if count==2 :
        mess=showwarning(title='图形验证码', message ='验证通过,将进入系统!' )
        root.destroy()  
    elif count==0:
        mess=showwarning(title='图形验证码', message ='请选择图形再验证!' )
    else:
        defcheck()
            
root.title('图形验证码')
root.wm_attributes('-topmost', 1)
root.geometry('500x180')
title=Label(root, text="请点击下面图中").grid(column=0, row=0)

call()



cvar1 = IntVar()
cvar2 = IntVar()
cvar3 = IntVar()
cvar4 = IntVar()
cvar5 = IntVar()
check1 = Checkbutton(root, text = "选择", variable = cvar1, onvalue = 1, offvalue = 0).grid(column=0, row=2) 
check2= Checkbutton(root, text = "选择", variable = cvar2,onvalue = 1, offvalue = 0).grid(column=1, row=2) 
check3 = Checkbutton(root, text = "选择", variable = cvar3, onvalue = 1, offvalue = 0).grid(column=2, row=2) 
check4= Checkbutton(root, text = "选择", variable = cvar4,onvalue = 1, offvalue = 0).grid(column=3, row=2)
check5 = Checkbutton(root, text = "选择", variable = cvar5, onvalue = 1, offvalue = 0).grid(column=4, row=2)
actis = Button(root, text="确认", command=test,width=8)      
actis.grid(column=3, row=3)    
actcal = Button(root, text="换一组", command=call,width=8)      
actcal.grid(column=4, row=3)   
root.mainloop()

效果

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1477050.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

sawForceDimensionSDK安装,sigma7+ros

force dimension的sdk中没有关于ros,借助开源的sawForceDimensionSDK实现对于数据的封装和可视化,方便后续使用 链接: GitHub - jhu-saw/sawForceDimensionSDK 具体步骤: 安装qt和ros,官网下载Force Dimension SDK …

Win10系统如何关闭边缘滑动功能?Win10关闭边缘滑动功能方法

Win10系统如何关闭边缘滑动功能?Win10系统支持电脑端和平板等移动设备,所以具有触控操作的功能,较为常见的就是边缘滑动手势功能,但有小伙伴想了解是否可以设置关闭,具体该如何设置呢? 设置方法 1、首先&…

idea2023新UI风格不见了怎么办?

用了一段时间idea2023,有一天不知道点了什么,整个UI又变成了2022的风格 如果想换成2023的UI风格怎么办? 点击file->setting->new UI->勾选Enable new UI,restart就可以回到最新版本的UI了 新风格

groovy:XmlParser 读 Freeplane.mm文件,生成测试案例.csv文件

Freeplane 是一款基于 Java 的开源软件,继承 Freemind 的思维导图工具软件,它扩展了知识管理功能,在 Freemind 上增加了一些额外的功能,比如数学公式、节点属性面板等。 强大的节点功能,不仅仅节点的种类很多&#xff…

Python爬虫项目实战案例-批量下载网易云榜单音乐保存至本地

✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua,在这里我会分享我的知识和经验。&#x…

数学学习与研究杂志社《数学学习与研究》杂志社编辑部2023年第29期目录

考试研究 提高高三数学二轮复习质量的思考与实践 佘淮青; 2-4 提升高三数学复习质量的策略探究 王飞; 5-7 核心素养背景下的高中数学命题策略研究 陈明发; 8-10 提升中考数学复习课的有效性研讨 韩兴宏; 11-13 中学教学方法《数学学习与研究》投稿:…

React入门之React_渲染基础用法和class实例写法

渲染元素 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>04元素渲染</title><script src&…

迟到的VNCTF2024逆向题WP

这次比赛因为有事外出&#xff0c;只做了前两题&#xff0c;最近有空才把另外3题也做出来&#xff0c;总体来说比以往的VNCTF逆向题目要难一些。当然也有可能是我水平退步了&#xff0c;就算有时间参加比赛&#xff0c;应该也做不完这5题。VN的小伙伴越来越厉害了&#xff0c;出…

Python + Google AI 自动修复 Sonar Bug 实践

前言 在工作中总会遇到种种不期而至的需求&#xff0c;比如前段时间突然要修复所有 Sonar Bug&#xff0c;涉及各种琐碎的代码风格问题&#xff0c;包括但不限于语法不规范、废弃注释等问题。这些项目都已经持续开发几年了&#xff0c;Sonar 上的问题层出不穷&#xff0c;各种…

汽车三元催化器的废品项目详解,三元催化再生项目的回收技术教学

一、教程描述 这是一个收废品项目&#xff0c;就收那些别人不懂的&#xff0c;三元催化器的附加值高&#xff0c;只要掌握技术&#xff0c;怎么玩都行的&#xff0c;只是要放得下你的面子。三元催化器&#xff0c;是安装在汽车排气系统中最重要的机外净化装置&#xff0c;它可…

Python 神经概率语言模型代码实现和详解,NPLM代码实现和详解;NPLM代码模板讲解,最简单的NLP预测模型

1.神经概率语言模型&#xff1a;NPLM NPLM&#xff08;Neural Probabilistic Language Model&#xff09;是一种经典的神经概率语言模型&#xff0c;被用于自然语言处理任务中。它使用神经网络来学习词汇之间的关系&#xff0c;通过计算词汇序列的概率分布来预测下一个词汇。N…

论文设计任务书学习文档|基于Web的个性化简历职位推荐系统的设计与实现

文章目录 论文(设计)题目:基于Web的个性化简历职位推荐系统的设计与实现1、论文(设计)的主要任务及目标2、论文(设计)的主要内容3、论文(设计)的基本要求4、进度安排论文(设计)题目:基于Web的个性化简历职位推荐系统的设计与实现 1、论文(设计)的主要任务及目标…

log4j 基础使用入门教程

一、Log4j介绍 在项目中&#xff0c;不管是开发人员写代码还是测试人员写的测试代码一般都需要做一些日志来记录项目的行为&#xff0c;以便更好的跟踪项目中的一些交互和问题。 Log4j ( Logger For Java ) , Java 日志的记录包。 官方网站 。Log4j 是 Apache 的一个开源项目…

理解C转汇编后代码分析

题目 . - 力扣&#xff08;LeetCode&#xff09; 解题代码 #include <stdio.h> #include "stdbool.h"typedef struct {int score;int index;int count; } Record; Record records[26] {0};int totalScore(char *w) {int total 0;for (int i 0; i < st…

程序员的金三银四/金九银十求职宝典

目录 金三银四&#xff0c;金九银十 方向一&#xff1a;面试技巧分享 方向二&#xff1a;面试题解析 方向三&#xff1a;公司文化解读 方向四&#xff1a;职业规划建议 方向五&#xff1a;成功案例展示 方向六&#xff1a;行业趋势分析 金三银四&#xff0c;金九银十 “金…

Docker制作lamp镜像并在其他机器上部署

为了方便将自己的LAMP运行环境和项目在其他机器上部署或发布&#xff0c;可以用基于Dockerhub 里的mattrayner/lamp镜像打包自己需要的镜像。 1、先选择合适的镜像文件 镜像mattrayner/lamp有多个版本&#xff0c;根据自己需要选择下载 2、镜像在首次运行时会自动下载&#x…

vue3 图片/视频 加载失败重试

vue3 图片/视频 加载失败重试 需求背景 用户手机上传图片走oss &#xff0c;在pc端在线客服连接socket 需要实时推送消息&#xff0c;接受到消息后&#xff0c;由于oss还回没有回调成功&#xff0c;所以图片/视频不能及时展示&#xff0c;所以做了一个失败重试的功能 效果图 技…

QQ录屏会录到外界声音吗?这篇文章告诉你答案

在现代网络科技快速发展的今天&#xff0c;屏幕录制已成为人们日常办公、学习、娱乐的重要工具。qq作为国内最受欢迎的社交软件之一&#xff0c;其内置的屏幕录制功能受到很多人的青睐。可是使用的过程中&#xff0c;很多人会有疑问&#xff1a;qq录屏会录到外界声音吗&#xf…

Python编程实验五:文件的读写操作

目录 一、实验目的与要求 二、实验内容 三、主要程序清单和程序运行结果 第1题 第2题 四、实验结果分析与体会 一、实验目的与要求 &#xff08;1&#xff09;通过本次实验&#xff0c;学生应掌握与文件打开、关闭相关的函数&#xff0c;以及与读写操作相关的常用方法的…

Constructor构造方法

在我们创建实例时&#xff0c;我们经常需要同时初始化这个实例&#xff0c;例如&#xff1a; Person ming new Person(); ming.setName("卫什么"); ming.setAge("18"); 这样需要三行代码&#xff0c;实际上&#xff0c;在我们创建实例时&#xff0c;是通过…