Python PySimpleGUI-登录身份验证器
我无法让登录验证器正常工作。除了login()函数外,所有功能都正常工作。另外两个函数progress_bar()和create_account()运行时没有问题。我一直收到一条keyrerror:'-username-'消息。我什么都试过了,甚至不使用函数,但仍然。我找不到问题所在。有人吗@意大利麦加酒店Python PySimpleGUI-登录身份验证器,python,pysimplegui,Python,Pysimplegui,我无法让登录验证器正常工作。除了login()函数外,所有功能都正常工作。另外两个函数progress_bar()和create_account()运行时没有问题。我一直收到一条keyrerror:'-username-'消息。我什么都试过了,甚至不使用函数,但仍然。我找不到问题所在。有人吗@意大利麦加酒店 import PySimpleGUI as sg #PROGRESS BAR def progress_bar(): sg.theme('LightBlue2') layo
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()
关闭windows gui后,不能使用
值['-password-']
。您必须在变量中存储用户名和密码。通过使用变量,您可以在登录函数中验证用户名和密码
试试这个:
import PySimpleGUI as sg
username = ''
password = ''
#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():
global username, password
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":
password = values['-password-']
username = values['-username-']
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():
global username,password
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-'] == username and values['-pwd-'] == password:
sg.popup("Welcome!")
break
elif values['-usrnm-'] != username or values['-pwd-'] != password:
sg.popup("Invalid login. Try again")
window.close()
login()
我只是碰巧遇到了这个,不幸的是,帖子中的标签实际上并没有“标记”我。我现在就开始看这个…好的,您正在创建两个单独的窗口(都称为“窗口”)并从这两个窗口引用键('-usrnm-'和'username')。当第一个create_account()窗口关闭时,这些键中存储的值将丢失。您收到一个KeyError,因为当login()函数打开时,您只能访问值['-usrnm-']和值['-pwd-']。其他键、值['-username-']和值['-password-']都不见了。你知道有什么资源可以让我了解使用事件编码的细节吗?我所看到的一切只是在教如何构建GUI,但它并没有展示如何将事件和代码联系起来。太令人沮丧了@基本上,你想完成什么?我已经使用PySimpleGUI好几年了,感觉很舒服。我从PySimpleGUI文档网站和PySimpleGUI Github学到了我所知道的一切。这两种方法都是了解事件定义的好资源。只是试着学习一下。有些事情是很清楚的,但很多事情是令人困惑的,或者根本没有解释或例子。他们只是告诉你有关语句或方法的情况,但没有确切地解释如何去做。例如,现在我正试图将一个列表打印到一个多行窗口上,但没有任何解释@真是太棒了!谢谢!你知道有什么资源可以让我了解事件编码的细节吗?我所看到的一切只是在教如何构建GUI,但它并没有展示如何将事件和代码联系起来。太令人沮丧了@巴尔加夫·德赛