Gerando Password
Felipe, escreva aqui alguma coisa sobre essa aplicação. Conte um pouco da história dela e fale um pouco sobre o funcionamento dela também. -- OsvaldoSantanaNeto
Codigo
1 #!/usr/bin/env python
2 # Pass Generator
3 # Rodrigo Calanca Nishino
4 #
5 # Programa simples que gera passwords
6 # Atenção: Ele usa o anyguy
7 #
8 # ChangeLog:
9 # - Modificado por FelipeLessa para (2004/01/17):
10 # o Otimizar conjuntos de letras.
11 # o Utilizar "".join ao invés de laço for em password() .
12 # o Retirar tag coding visto que quando o código for copiado & colado do Wiki ele pode ser alterado.
13 # o Texto que aparece por padrão deve corresponder ao especificado no início do arquivo.
14 # o Adicionada a possibilidade de importar arquivo sem abrir a janela.
15 # o Modificações menores.
16
17
18 # Import's
19 from random import choice
20 from anygui import *
21
22 # Tamanho padrão do password
23 pass_tamanho = 5
24
25 # Conjuntos de letras
26 maius = "ABCDEFGHIJKLMNOPQRSTUVXWYZ"
27 minus = "abcdefghijklmnopqrstuvwxyz" # maius.lower()
28 numeros = "0123456789"
29 todas = maius + minus + numeros
30
31 # Função por onde todo o programa se desenrola
32 def password(vezes, conjunto=todas):
33 """Gera uma senha aleatória de vezes dígitos baseado numa lista de caracteres passados
34 através da variável conjunto."""
35 lista = [] # Lista vazia para guardar caracteres temporariamente.
36
37 for n in range(vezes): # Laço repetido o número de vezes especificado
38 char = choice(conjunto) # Escolhe um caracterer da variável "a".
39 lista.append(char) # Coloca o mesmo no fim da lista.
40
41 result = "".join(lista) # Pega a senha recém-criada e põe em uma string vazia.
42 return result # Retorna a string.
43
44 # Iniciar criação da GUI
45 app = Application()
46
47 janela = Window()
48 janela.title = "Password Generator"
49
50 texto = TextField()
51 texto.hstretch = 1
52
53 ### Botões de escolha
54 # Todos os tipos de caracteres
55 ball = Button()
56 ball.position = 5, 65
57 ball.text = "ToDa5"
58
59 # Caracteres em letras minúsculas
60 bmin = Button()
61 bmin.text = "a-z"
62
63 # ... em letras maiúsculas
64 bmaius = Button()
65 bmaius.text = "A-Z"
66
67 # ... apenas números
68 bnum = Button()
69 bnum.text = "0-9"
70
71
72 tamanho = TextField() # Espaço onde aparece o tamanho dos passwords.
73 tamanho.text = str(pass_tamanho) # Texto que aparece por padrão quando o programa começa.
74
75 bot_mais = Button()
76 bot_mais.text = "+"
77
78 bot_menos = Button()
79 bot_menos.text = "-"
80
81 titulo = Label(text="Cria novos passwords")
82
83
84
85 janela.add(titulo, hstretch = 1)
86
87 janela.add(texto, position=(0,30), right=5, hstretch=1)
88
89 janela.add(ball, top=(texto, 5), hmove=0)
90 janela.add(bmin, top=(ball,5), left = 5, hmove=0)
91 janela.add(bmaius, top=(bmin,5), left = 5, hmove=0)
92 janela.add(bnum, top=(bmaius,5), left = 5, hmove=0)
93
94 janela.add(tamanho, top=(bnum, 15), left=5, width = 35, hmove=0)
95
96 # Botoes de controle do tamanho do password
97 janela.add(bot_menos, top=(tamanho, 15), left=5, width = 35, hmove=0)
98 janela.add(bot_mais, top=(tamanho, 15), left=(bot_menos, 5), width = 35, hmove=0)
99
100 janela.size = 180, 280
101
102 #########
103 ###### Funções que os botões acessam quando clicados
104 #########
105
106 def handler_ball(event, source, time):
107 texto.text = password(pass_tamanho, todas)
108
109 def handler_bmin(event, source, time):
110 texto.text = password(pass_tamanho, minus)
111
112 def handler_bmaius(event, source, time):
113 texto.text = password(pass_tamanho, maius)
114
115 def handler_bnum(event, source, time):
116 texto.text = password(pass_tamanho, numeros)
117
118 def handler_size(event, source, time):
119 pass_tamanho = int(tamanho.text)
120
121 def mais_tamanho(event, source, time):
122 global pass_tamanho
123 pass_tamanho = pass_tamanho + 1
124 tamanho.text = pass_tamanho
125
126 def menos_tamanho(event, source, time):
127 global pass_tamanho
128 pass_tamanho = pass_tamanho - 1
129 tamanho.text = pass_tamanho
130
131 ###
132 # Associando os botões às suas respectivas funções
133 ###
134
135 link(ball, handler_ball)
136 link(bmin, handler_bmin)
137 link(bmaius, handler_bmaius)
138 link(bnum, handler_bnum)
139 link(bot_mais, mais_tamanho)
140 link(bot_menos, menos_tamanho)
141
142 app.add(janela) # Coloca a janela dentro do programa
143
144 if __name__=="__main__":
145 app.run() # Roda o programa