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

'Local variable 'has_mastr_pass' value is not used' in Python

I am trying to make a password manager using Tkinter in Python. I keep receiving a warning saying ‘Local variable ‘has_mastr_pass’ value is not used’ when I have already used it in an if statement. I am attempting to make it so you have to input a master password before being able to use the rest of the app, but I am having trouble getting the rest of the code to run once I’ve inputted the master password. I have tried putting global has_mastr_pass before defining the variable, but it didn’t work. I’m completely stuck.

Full code:

from tkinter import *

master = ''
passwords = []
has_mastr_pass = True
chars = ['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', '0', '1', '2', '3', '4',
        '5', '6',
        '7', '8', '9']


def master_pass():
   _input = mastr_entry.get()
   # noinspection PyShadowingNames
   has_mastr_pass = True


def enter_value(total_=0):
   input_ = txt.get()
   if input_ != '':
       for i in input_:
           total_ += 1
       if total_ >= 4:
           passwords.append(input_)
           lbl2.configure(text='Password entered.')
       elif total_ < 4:
           lbl2.configure(text='Input 4+ digits/letters.')
   else:
       lbl2.configure(text='Input a password.')


def password():
   separator = ", "
   lbl3.configure(text=separator.join(passwords))


window = Tk()
window.geometry('500x300')
window.resizable(False, False)
window.title('Password Manager')
window.iconbitmap('./assets/lock.ico')

mastr_lbl = Label(text='Enter Master Password: ', font=('Times', 20))
mastr_lbl.grid(column=0, row=0)

mastr_entry = Entry(window, width=20)
mastr_entry.grid(column=0, row=1, sticky='w')

mastr_btn = Button(window, text='Enter', command=master_pass, activebackground='grey')
mastr_btn.place(x=126, y=34)

if has_mastr_pass:
   lbl1 = Label(text='Enter Your Password:', font=('Times', 20))
   lbl1.grid(column=0, row=0, sticky='w')

   lbl2 = Label(text='', font=('Times', 15))
   lbl2.grid(column=0, row=2, sticky='w')

   lbl3 = Label(text='', font=('Times', 15))
   lbl3.place(x=0, y=125)

   txt = Entry(window, width=50)
   txt.grid(column=0, row=1)

   btn = Button(window, text='Enter', command=enter_value, activebackground='grey')
   btn.grid(column=1, row=1)

   btn2 = Button(window, text='See Stored Passwords', command=password, activebackground='grey')
   btn2.place(x=0, y=100)

window.mainloop() 

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

>Solution :

def master_pass():
   _input = mastr_entry.get()
   # noinspection PyShadowingNames
   has_mastr_pass = True

Inside of this function, has_mastr_pass is a local variable that is never used. It is not global.

If you want this function to affect the global variable of the same name, put global has_mastr_pass at the top of the function.

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