simple generador de claves con tkinter

Iniciado por tincopasan, 21 Marzo 2016, 06:33 AM

0 Miembros y 1 Visitante están viendo este tema.

tincopasan

Estuve haciendo un sencillo generador de claves, para quienes estamos aprendiendo el uso de tkinter y algunas de sus funciones para hacerlo un poquito más visual.
Es mejor hacer el archivo .pyw para que no salga la molesta consola.
Es todo simple, pero creo ayudará  a los más nuevos.
Saludos
Código (python) [Seleccionar]

#código realizado por tincopasan
#-*- coding: utf -8 -*-
from tkinter import *
from tkinter import messagebox
import string
import random


def generar_pass():
   pass_may=cmay.get()
   pass_min=cmin.get()
   pass_num=cnum.get()
   pass_sim=csim.get()
   
   exito= 0
   
   global argumentos
   argumentos =""
   
   if pass_may == 1:
       mayusculas=string.ascii_uppercase
       argumentos = argumentos + mayusculas
       exito=1        
       
   if pass_min == 1:
       minusculas=string.ascii_lowercase
       argumentos = argumentos + minusculas
       exito = 1
   
   if pass_sim == 1:
       simbolos="@#\/¿?¡!.,+-_"
       argumentos=argumentos + simbolos
       exito = 1

   if pass_num == 1:
       numeros=string.digits
       argumentos= argumentos + numeros
       exito=1
   
   if exito == 0:
       messagebox.showinfo("¡Error!","Debes seleccionar por lo menos 1 argumento")
       
   if exito == 1:
       cuantas = 0
       total = arg_cantidad.get()
       dic = open("diccionario.txt", "a")
       while cuantas < total:
           cuantas = cuantas + 1        
           password =  "".join(random.SystemRandom().choice(argumentos) for _ in range(arg_largo.get()))
           dic.write(password + "\n")
       
       dic.close()
       messagebox.showinfo("¿Atención!","Archivo de claves generado exitosamente")    

 
ventana=Tk()
ventana.title("Generador de Passwords")
ventana.geometry("220x190+200+150")
eleccion=Label(ventana,text="Elija que argumentos utilizar").place(x=0,y=0)

cmay=IntVar()
chkmay=Checkbutton(ventana,text="Mayúsculas",variable=cmay,onvalue=1,offvalue=0).place(x=10,y=20)

cmin=IntVar()
chkmin=Checkbutton(ventana,text="Minúsculas",variable=cmin,onvalue=1,offvalue=0).place(x=10,y=40)

cnum=IntVar()
chknum=Checkbutton(ventana,text="Números",variable=cnum,onvalue=1,offvalue=0).place(x=10,y=60)

csim=IntVar()
chksim=Checkbutton(ventana,text="Símbolos",variable=csim,onvalue=1,offvalue=0).place(x=10,y=80)

largo=Label(ventana,text="¿Largo de la contraseña?: ").place(x=10,y=100)
cantidad=Label(ventana,text="¿Cantidad de contraseñas?: ").place(x=10,y=120)
arg_largo= IntVar()
inicio=Entry(ventana,textvariable= arg_largo, width=2).place(x=160,y=100)
arg_cantidad=IntVar()
cuantas=Entry(ventana,textvariable=arg_cantidad,width=2).place(x=160,y=120)

quien=Label(ventana,text="Realizado por tincopasan").place(x=10,y=170)
boton_generar=Button(ventana,text="Generar pass",command=generar_pass).place(x=130,y=140)
boton_salir=Button(ventana,text="Salir",command=ventana.quit).place(x=10,y=140)
arg_cantidad.set(1)
arg_largo.set(1)
ventana.resizable(0,0)
   
ventana.mainloop()