Страница входа в Python Tkinter, цикл и .CSV - PullRequest
0 голосов
/ 08 марта 2019

Я пытаюсь создать страницу входа в систему, используя python и tkinter. Я сделал большую часть этого, мне просто нужна помощь с проверкой. У меня есть имена пользователей и пароли, хранящиеся в .CSV. Программа работает, но мой цикл while неверен. Он корректно проверяет имя пользователя и пароль пользователя, но из-за цикла отправляет окно сообщения, в котором говорится, что произошел сбой, а затем - сообщение о том, что оно прошло успешно (зависит от того, сколько пользователей я сохранил). Также elif, который проверяет, не было ли ничего введено, заставляет окно сообщения закрываться и продолжать выскакивать. Спасибо за помощь.

    def verification(self):
    username = username_verify.get()
    password = password_verify.get()

    username_entry.delete(0, END)
    password_entry.delete(0, END)

    import csv
    with open('Users.csv') as csvfile:
        reader = csv.DictReader(csvfile)
        database = []
        for row in reader:
            database.append(dict(username=row['username'], password=row['password']))

    logged_in = False
    while not logged_in:
        for row in database:
            username_file = row['username']
            password_file = row['password']

            if (username_file == username and password_file == password):
                logged_in = True
                tkinter.messagebox.showwarning("Success", "Login successful")
                root.destroy()
                import SecondWindow
            elif username == "" or password == "":
                tkinter.messagebox.showwarning("Error", "Username or password not entered, please retry!")   
            else:
                tkinter.messagebox.showwarning("Error", "Username or password not recognised, please retry!")

1 Ответ

0 голосов
/ 08 марта 2019

Это исправит это? (Попытка с мобильного телефона, поэтому я не смог проверить его)

def verification(self):

    username = username_verify.get()
    password = password_verify.get()

    username_entry.delete(0, END)
    password_entry.delete(0, END)

    import csv
    with open('Users.csv') as csvfile:
        reader = csv.DictReader(csvfile)
        database = []
        for row in reader:
            database.append(dict(username=row['username'], password=row['password']))

    logged_in = False
    while not logged_in:
        if username == "" or password == "":
            tkinter.messagebox.showwarning("Error", "Username or password not entered, please retry!")  
        for row in database:
            username_file = row['username']
            password_file = row['password']

            if (username_file == username and password_file == password):
                logged_in = True
                tkinter.messagebox.showwarning("Success", "Login successful")
                root.destroy()
                import SecondWindow
                break

        if not logged_in:
            tkinter.messagebox.showwarning("Error", "Username or password not recognised, please retry!")
...