I'm having trouble getting the login authenticator to work. Everything works fine except the login() function. The other two functions progress_bar() and create_account() are running without a problem. I keep getting a KeyError: '-username-' message. I've tried everything, even not using functions, and still. I can't find the issue. Anyone? @MacItaly
import PySimpleGUI as sg
#PROGRESS BAR
def progress_bar():
sg.theme('LightBlue2')
layout = [[sg.Text('Creating your account...')],
[sg.ProgressBar(1000, orientation='h', size=(20, 20), key='progbar')],
[sg.Cancel()]]
window = sg.Window('Working...', layout)
for i in range(1000):
event, values = window.read(timeout=1)
if event == 'Cancel' or event == sg.WIN_CLOSED:
break
window['progbar'].update_bar(i + 1)
window.close()
def create_account():
sg.theme('LightBlue2')
layout = [[sg.Text("Sign Up", size =(15, 1), font=40, justification='c')],
[sg.Text("E-mail", size =(15, 1),font=16), sg.InputText(key='-email-', font=16)],
[sg.Text("Re-enter E-mail", size =(15, 1), font=16), sg.InputText(key='-remail-', font=16)],
[sg.Text("Create Username", size =(15, 1), font=16), sg.InputText(key='-username-', font=16)],
[sg.Text("Create Password", size =(15, 1), font=16), sg.InputText(key='-password-', font=16, password_char='*')],
[sg.Button("Submit"), sg.Button("Cancel")]]
window = sg.Window("Sign Up", layout)
while True:
event,values = window.read()
if event == 'Cancel' or event == sg.WIN_CLOSED:
break
else:
if event == "Submit":
if values['-email-'] != values['-remail-']:
sg.popup_error("Error", font=16)
continue
elif values['-email-'] == values['-remail-']:
progress_bar()
break
window.close()
create_account()
def login():
sg.theme("LightBlue2")
layout = [[sg.Text("Log In", size =(15, 1), font=40)],
[sg.Text("Username", size =(15, 1), font=16),sg.InputText(key='-usrnm-', font=16)],
[sg.Text("Password", size =(15, 1), font=16),sg.InputText(key='-pwd-', password_char='*', font=16)],
[sg.Button('Ok'),sg.Button('Cancel')]]
window = sg.Window("Log In", layout)
while True:
event,values = window.read()
if event == "Cancel" or event == sg.WIN_CLOSED:
break
else:
if event == "Ok":
if values['-usrnm-'] == values['-username-'] and values['-pwd-'] == values['-password-']:
sg.popup("Welcome!")
break
elif values['-usrnm-'] != values['-username-'] and values['-pwd-'] != values['-password-']:
sg.popup("Invalid login. Try again")
window.close()
login()
You can not use
values['-password-']
after closing windows gui. you have to store username and password in variable. by using variable you can verify username and password at login function.Try this :