Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Script feito em python 3.5
- # Criado por: André Luis
- # Validador e gerador de cpf(válidos) - criado com o objetivo de testes de software.
- # Qualquer critica é bem vinda.
- # Ultima atualização: 11/10/2016 às 16:18
- ######################################################################################
- from tkinter import *
- from tkinter import messagebox
- import random
- def main ():
- '''Funcão inicial - Janela'''
- global textSaida, caixaEntrada
- escrita = 'Gerador e validador de cpf,\nfeito para testes em programas!'
- #############################################
- janela=Tk()
- janela.geometry('300x295+500+250')
- janela.title('Validador de CPF')
- janela.resizable(width=False, height=False)
- janela['bg']='lavender'
- #############################################
- caixaEntrada = Entry(janela,width=25,font=('havana 10 italic'))
- caixaEntrada.place(x=60,y=30)
- caixaEntrada.focus()
- #############################################
- texto = Label(janela,text='CPF',font=('havana 10 italic'),bg='lavender')
- text2= Label(janela,text=escrita, font=('havana 12 italic'),bg='lavender',fg='gray')
- texto.place(x=20,y=30)
- text2.place(x=10,y=195)
- #############################################
- bt1 = Button(janela,text='Validar',width=9,command=bt_validador)
- bt2 = Button(janela,text='Gerar',width=9,command=bt_gera_cpf)
- bt3 = Button(janela,text='Sair',width=9,command=bt_sair)
- bt4 = Button(janela,text='Limpar',width=9,command=bt_limpar)
- bt1.place(x=60,y=60)
- bt2.place(x=167,y=60)
- bt3.place(x=167,y=255)
- bt4.place(x=60,y=255)
- #############################################
- textSaida=Text(janela,width=22,height=4,font=('havana 12 bold'))
- textSaida.place(x=20,y=100)
- #############################################
- linha = Canvas(janela,width=280,height=1,bg='gray')
- linha2 = Canvas(janela,width=280,height=1,bg='gray')
- linha.place(x=10,y=240)
- linha2.place(x=10,y=190)
- #############################################
- janela.mainloop()
- def bt_validador():
- ''' Função responsável por receber os numeros e verficiar se é apenas numeros'''
- cpf = caixaEntrada.get().replace(".","").replace("-","")
- while cpf.isdigit() == False or len(cpf) != 11:
- #textSaida.insert(INSERT,caixaEntrada.get())
- caixaEntrada.delete(0,END)
- messagebox.showinfo('CPF','Cpf Invalido')
- return
- cpf_falso(cpf)
- if calculo_digitos(cpf,9) == False:
- textSaida.delete(1.0,END)
- caixaEntrada.delete(0,END)
- messagebox.showinfo('CPF','Cpf inválido')
- textSaida.insert(INSERT,'{0}{1}{2}.{3}{4}{5}.{6}{7}{8}-{9}{10}'.format(*cpf))
- if calculo_digitos(cpf,10) == True:
- textSaida.delete(1.0,END)
- caixaEntrada.delete(0,END)
- messagebox.showinfo('CPF','Cpf válido')
- textSaida.insert(INSERT,'{0}{1}{2}.{3}{4}{5}.{6}{7}{8}-{9}{10}'.format(*cpf))
- else:
- textSaida.delete(1.0,END)
- caixaEntrada.delete(0,END)
- messagebox.showinfo('CPF','Cpf inválido!')
- textSaida.insert(INSERT,'{0}{1}{2}.{3}{4}{5}.{6}{7}{8}-{9}{10}'.format(*cpf))
- def calculo_digitos(n, digito):
- ''' Função responsavel por calcular os digitos 10 e 1 do cpf- o Paramentro
- N = CPF || digito = digito a calcular'''
- contador = 0
- z = (digito+1)
- for x in n[0:digito]:
- x = int(x)
- mult = z * x
- contador+=mult
- z-=1
- resto = (contador%11)
- if resto < 2:
- resto=0
- else:
- resto = 11 - resto
- if resto != int(n[digito]):
- return False
- else:
- return True
- def cpf_falso(n):
- ''' Função responsável para controlar os cpf com números iguais.'''
- if n == "11111111111" or n == "22222222222" or n == "33333333333":
- print("Cpf invalido")
- if n == "44444444444" or n == "55555555555" or n == "66666666666":
- print("Cpf invalido")
- if n == "77777777777" or n == "88888888888" or n == "99999999999":
- print("Cpf invalido")
- def bt_gera_cpf():
- ''' Função responsável por gerar 9 números aleatorios'''
- textSaida.delete(1.0,END)
- n=""
- for x in range(9):
- n+= "".join(str(random.randint(0,9)))
- gera_digitos(n,9)
- n+="".join(str(num))
- gera_digitos(n,10)
- n+="".join(str(num))
- messagebox.showinfo('CPF',"Gerado Com sucesso!")
- textSaida.insert(INSERT,'{0}{1}{2}.{3}{4}{5}.{6}{7}{8}-{9}{10}'.format(*n))
- def gera_digitos(n,dig):
- '''Função responsavel por gerar os digitos 10 e 11 validos para o cpf
- O Paramentro n = os 9 digitos do gera _cpf ||| dig = digito a calcular '''
- global num
- contador = 0
- num=0
- dig = dig +1
- for x in n[0:dig]:
- x = int(x)
- mult = dig * x
- contador+=mult
- dig-=1
- resto = (contador%11)
- if resto < 2:
- num=0
- else:
- num = 11 - resto
- def bt_limpar():
- caixaEntrada.delete(0,END)
- textSaida.delete(1.0,END)
- caixaEntrada.focus()
- def bt_sair():
- exit()
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement