Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python PySimpleGUI-登录身份验证器_Python_Pysimplegui - Fatal编程技术网

Python PySimpleGUI-登录身份验证器

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

我无法让登录验证器正常工作。除了login()函数外,所有功能都正常工作。另外两个函数progress_bar()和create_account()运行时没有问题。我一直收到一条keyrerror:'-username-'消息。我什么都试过了,甚至不使用函数,但仍然。我找不到问题所在。有人吗@意大利麦加酒店

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,但它并没有展示如何将事件和代码联系起来。太令人沮丧了@巴尔加夫·德赛