Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

Generator is limiting

It runs, the TK design is fine but the generated code is limited to one type. What it currently does when it runs is pops up a window with (copy and Generate) button, 4 radio buttons (low, medium, strong, powerful), a drop down for the length(8-32), and the entry box where the password does generate.

It currently only generates one type so if you pick low the generated password is in all lower case, if you pick medium all upper case, strong all numbers and powerful all symbols.

I’d like to edit to use a combination of upper,lower,numbers, symbols instead of just one

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

The full code is listed below



# Python program to generate random
# password using Tkinter module
import random
import pyperclip
from tkinter import *
from tkinter.ttk import *
 
# Function for calculation of password
def low():
    entry.delete(0, END)
 
    # Get the length of password
    length = var1.get()
 
    digits = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0']
    symbols = ['!', '@', '#', '$', '%', '^', '&', '*', '(', ')']
    lower = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
    upper = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']
    password = ""
 
    # if strength selected is low
    if var.get() == 1:
        for i in range(0, length):
            password = password + random.choice(lower)
        return password
 
    # if strength selected is medium
    elif var.get() == 0:
        for i in range(0, length):
            password = password + random.choice(upper)
        return password
 
    # if strength selected is strong
    elif var.get() == 3:
        for i in range(0, length):
            password = password + random.choice(digits)
        return password
    
    #if strength selected is powerful
    elif var.get() == 2:
        for i in range(0, length):
            password = password + random.choice(symbols)
        return password
    else:
        print("Please choose an option")
 
 
# Function for generation of password
def generate():
    password1 = low()
    entry.insert(10, password1)
 
 
# Function for copying password to clipboard
def copy1():
    random_password = entry.get()
    pyperclip.copy(random_password)
 
 
# Main Function
 
# create GUI window
root = Tk()
var = IntVar()
var1 = IntVar()
 
# Title of your GUI window
root.title("Random Password Generator")
 
# create label and entry to show
# password generated
Random_password = Label(root, text="Password")
Random_password.grid(row=0)
entry = Entry(root)
entry.grid(row=0, column=1)
 
# create label for length of password
c_label = Label(root, text="Length")
c_label.grid(row=1)
 
# create Buttons Copy which will copy
# password to clipboard and Generate
# which will generate the password
copy_button = Button(root, text="Copy", command=copy1)
copy_button.grid(row=0, column=2)
generate_button = Button(root, text="Generate", command=generate)
generate_button.grid(row=0, column=3)
 
# Radio Buttons for deciding the
# strength of password
# Default strength is Medium
radio_low = Radiobutton(root, text="Low", variable=var, value=1)
radio_low.grid(row=1, column=2, sticky='E')
radio_middle = Radiobutton(root, text="Medium", variable=var, value=0)
radio_middle.grid(row=1, column=3, sticky='E')
radio_strong = Radiobutton(root, text="Strong", variable=var, value=3)
radio_strong.grid(row=1, column=4, sticky='E')
radio_powerful = Radiobutton(root, text = "Powerful", variable = var, value = 2)
radio_powerful.grid(row = 1, column = 5, sticky = 'E')
combo = Combobox(root, textvariable=var1)
 
# Combo Box for length of your password
combo['values'] = (8, 9, 10, 11, 12, 13, 14, 15, 16,
                   17, 18, 19, 20, 21, 22, 23, 24, 25,
                   26, 27, 28, 29, 30, 31, 32)
combo.current(0)
combo.bind('<<ComboboxSelected>>')
combo.grid(column=1, row=1)
 
# start the GUI
root.mainloop()

I did try on line 43

            password = password + random.choice(symbols) + random.choice(upper) + random.choice(lower)



 #2nd try
password = password + random.choice(symbols, upper, lower)

This did use symbols, upper and lower case but the length was set to 8 and it generated 24 (8 of each) On the bright side it did randomly put them in Example: (Dh$Yr!Gq$Hy$Zg@Fv&Uz@Af)

The 2nd try resulted in a error:
line 43, in low
password = password + random.choice(symbols, upper, lower)
TypeError: Random.choice() takes 2 positional arguments but 4 were given

>Solution :

try this

 password = password + random.choice(symbols + upper + lower)

OR

password += random.choice(symbols + upper + lower)

HERE IS YOU FULL CODE> I am writing a comment where I change my code.

# Python program to generate random
# password using Tkinter module
import random
import pyperclip
from tkinter import *
from tkinter.ttk import *
 
# Function for calculation of password
def low():
    entry.delete(0, END)
 
    # Get the length of password
    length = var1.get()
 
    digits = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0']
    symbols = ['!', '@', '#', '$', '%', '^', '&', '*', '(', ')']
    lower = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
    upper = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']
    password = ""
 
    # if strength selected is low
    if var.get() == 1:
        for i in range(0, length):
            password = password + random.choice(lower) # for low security choose letters from lower
        return password
 
    # if strength selected is medium
    elif var.get() == 0:
        for i in range(0, length):
            password = password + random.choice(lower+upper) # for medium security choose letters from lower and upper
        return password
 
    # if strength selected is strong
    elif var.get() == 3:
        for i in range(0, length):
            password = password + random.choice(lower+upper+digits) # for strong security choose letters from lower, upper, and digits.
        return password
    
    #if strength selected is powerful
    elif var.get() == 2:
        for i in range(0, length):
            password = password + random.choice(lower+upper+digits+symbols) # for powerful security choose letters from lower, upper, digits, and symbols.
        return password
    else:
        print("Please choose an option")
 
 
# Function for generation of password
def generate():
    password1 = low()
    entry.insert(10, password1)
 
 
# Function for copying password to clipboard
def copy1():
    random_password = entry.get()
    pyperclip.copy(random_password)
 
 
# Main Function
 
# create GUI window
root = Tk()
var = IntVar()
var1 = IntVar()
 
# Title of your GUI window
root.title("Random Password Generator")
 
# create label and entry to show
# password generated
Random_password = Label(root, text="Password")
Random_password.grid(row=0)
entry = Entry(root)
entry.grid(row=0, column=1)
 
# create label for length of password
c_label = Label(root, text="Length")
c_label.grid(row=1)
 
# create Buttons Copy which will copy
# password to clipboard and Generate
# which will generate the password
copy_button = Button(root, text="Copy", command=copy1)
copy_button.grid(row=0, column=2)
generate_button = Button(root, text="Generate", command=generate)
generate_button.grid(row=0, column=3)
 
# Radio Buttons for deciding the
# strength of password
# Default strength is Medium
radio_low = Radiobutton(root, text="Low", variable=var, value=1)
radio_low.grid(row=1, column=2, sticky='E')
radio_middle = Radiobutton(root, text="Medium", variable=var, value=0)
radio_middle.grid(row=1, column=3, sticky='E')
radio_strong = Radiobutton(root, text="Strong", variable=var, value=3)
radio_strong.grid(row=1, column=4, sticky='E')
radio_powerful = Radiobutton(root, text = "Powerful", variable = var, value = 2)
radio_powerful.grid(row = 1, column = 5, sticky = 'E')
combo = Combobox(root, textvariable=var1)
 
# Combo Box for length of your password
combo['values'] = (8, 9, 10, 11, 12, 13, 14, 15, 16,
                   17, 18, 19, 20, 21, 22, 23, 24, 25,
                   26, 27, 28, 29, 30, 31, 32)
combo.current(0)
combo.bind('<<ComboboxSelected>>')
combo.grid(column=1, row=1)
 
# start the GUI
root.mainloop()
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading