You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
198 lines
6.1 KiB
198 lines
6.1 KiB
import random |
|
import string |
|
from tkinter import * |
|
import tkinter.font as font |
|
|
|
# ########################################### |
|
digits = list(string.digits*10 + string.ascii_lowercase*10) |
|
uppercase = list(string.ascii_uppercase + string.ascii_lowercase)*30 |
|
lowercase = list(string.ascii_lowercase)*30 |
|
punct = list(string.ascii_lowercase*10 + string.punctuation*5) |
|
|
|
upp_dig = list(string.digits*10 + string.ascii_lowercase*10 + string.ascii_uppercase*10) |
|
upp_dig_pun = list(string.digits*10 + string.ascii_lowercase*10 + string.ascii_uppercase*10 + string.punctuation*5) |
|
digits_pun = list(string.ascii_lowercase*10 + string.digits*10 + string.punctuation*5) |
|
upp_pun = list(string.ascii_lowercase*10 + string.ascii_uppercase*10 +string.punctuation*5) |
|
# ########################################### |
|
|
|
|
|
# GUI |
|
uppercase_status = False |
|
digits_status = False |
|
punct_status = False |
|
back = '#B9B9B9' |
|
def change_uppercase(): |
|
global uppercase_status |
|
if uppercase_status == False: |
|
uppercase_status = True |
|
else: |
|
uppercase_status = False |
|
pass |
|
|
|
def change_digits(): |
|
global digits_status |
|
if digits_status == False: |
|
digits_status = True |
|
else: |
|
digits_status = False |
|
pass |
|
|
|
def change_punct(): |
|
global punct_status |
|
if punct_status == False: |
|
punct_status = True |
|
else: |
|
punct_status = False |
|
pass |
|
|
|
def generate(): |
|
clear() |
|
########################## FUNCTIONS |
|
def simplegen(): |
|
global rand_simp |
|
rand_simp = random.sample(lowercase, length_value) |
|
return rand_simp |
|
|
|
def uppergen(): |
|
global rand_up |
|
rand_up = random.sample(uppercase, length_value) |
|
return rand_up |
|
|
|
def digigen(): |
|
global rand_dig |
|
rand_dig = random.sample(digits, length_value) |
|
return rand_dig |
|
|
|
def pungen(): |
|
global rand_pun |
|
rand_pun = random.sample(punct, length_value) |
|
return rand_pun |
|
|
|
def upper_dig(): |
|
global rand_up_dig |
|
rand_up_dig = random.sample(upp_dig, length_value) |
|
return rand_up_dig |
|
|
|
def upper_dig_pun(): |
|
global rand_up_dig_pun |
|
rand_up_dig_pun = random.sample(upp_dig_pun, length_value) |
|
return rand_up_dig_pun |
|
|
|
def dig_pun(): |
|
global rand_dig_pun |
|
rand_dig_pun = random.sample(digits_pun, length_value) |
|
return rand_dig_pun |
|
|
|
def upper_pun(): |
|
global rand_up_pun |
|
rand_up_pun = random.sample(upp_pun, length_value) |
|
return rand_up_pun |
|
########################## |
|
length_value = scale_length.get() |
|
#### IF ALL ARE FALSE: |
|
if uppercase_status == False and digits_status == False and punct_status == False: |
|
simplegen() |
|
password_low = ''.join(rand_simp) |
|
maintext.insert('1.999999999', password_low) |
|
pass |
|
if uppercase_status == True and digits_status == False and punct_status == False: |
|
uppergen() |
|
password_up = ''.join(rand_up) |
|
maintext.insert('1.999999999', password_up) |
|
pass |
|
if uppercase_status == False and digits_status == True and punct_status == False: |
|
digigen() |
|
password_dig = ''.join(rand_dig) |
|
maintext.insert('1.999999999', password_dig) |
|
pass |
|
if uppercase_status == False and digits_status == False and punct_status == True: |
|
pungen() |
|
password_pun = ''.join(rand_pun) |
|
maintext.insert('1.999999999', password_pun) |
|
pass |
|
if uppercase_status == True and digits_status == True and punct_status == False: |
|
upper_dig() |
|
password_up_dig = ''.join(rand_up_dig) |
|
maintext.insert('1.999999999', password_up_dig) |
|
pass |
|
|
|
if uppercase_status == True and digits_status == True and punct_status == True: |
|
upper_dig_pun() |
|
password_up_dig_pun = ''.join(rand_up_dig_pun) |
|
maintext.insert('1.999999999', password_up_dig_pun) |
|
pass |
|
if uppercase_status == False and digits_status == True and punct_status == True: |
|
dig_pun() |
|
password_dig_pun = ''.join(rand_dig_pun) |
|
maintext.insert('1.999999999', password_dig_pun) |
|
pass |
|
if uppercase_status == True and digits_status == False and punct_status == True: |
|
upper_pun() |
|
password_up_pun = ''.join(rand_up_pun) |
|
maintext.insert('1.999999999', password_up_pun) |
|
pass |
|
pass |
|
|
|
def copy(): |
|
text_copy = str(maintext.get(1.0,END)) |
|
root.clipboard_clear() |
|
root.clipboard_append(text_copy) |
|
root.update() |
|
pass |
|
|
|
def clear(): |
|
maintext.delete('0.0', END) |
|
pass |
|
|
|
root = Tk() |
|
root.title('Password Generator') |
|
img = PhotoImage(file = 'icon.png') |
|
root.tk.call('wm','iconphoto', root._w, img) |
|
root.geometry(("700x300")) |
|
root.minsize(700,300) |
|
root.maxsize(700,300) |
|
canvas = Canvas(root,width = 700,height = 300, bg = back) |
|
canvas.pack() |
|
|
|
maintext = Text(root, wrap = WORD) |
|
maintext_font = font.Font(size = 20) |
|
maintext['font'] = maintext_font |
|
maintext.place(width = 550, height = 140,x = 700-550-75-50,y = 150) |
|
|
|
|
|
check_for_uppercases = Checkbutton(root ,text = "Uppercase", bg = back) |
|
check_for_uppercases.config(command = change_uppercase) |
|
check_for_uppercases.place(height = 46,x = 10, y = 5) |
|
|
|
|
|
|
|
check_for_digits = Checkbutton(root, text = "Digits", justify = "left", bg = back) |
|
check_for_digits.config(command = change_digits) |
|
check_for_digits.place(height = 50,x = 10, y = 50) |
|
|
|
|
|
check_for_punct = Checkbutton(root, text = "Punctuation", bg = back) |
|
check_for_punct.config(command = change_punct) |
|
check_for_punct.place(height = 50,x = 10, y = 95) |
|
|
|
|
|
generate_button = Button(root, text = "Generate", bg = back) |
|
generate_button.config(command = generate) |
|
generate_button.place(x = 590, y = 150, width = 100) |
|
|
|
save_to_button = Button(root, text = "Copy", bg = back) |
|
save_to_button.config(command = copy) |
|
save_to_button.place(x = 590, y = 190, width = 100) |
|
|
|
clear_button = Button(root, text = 'Clear', bg = back) |
|
clear_button.config(command = clear) |
|
clear_button.place(x = 590, y = 230 , width = 100) |
|
|
|
|
|
scale_length = Scale(root, orient = "horizontal", length = 200, from_ = 1, bg = back) |
|
scale_length.place(x = 370,y = 0) |
|
label_length = Label(root, text = "The length :", bg = back) |
|
label_length.place(x = 270,y = 20) |
|
|
|
|
|
root.mainloop()
|
|
|