Проверка внешнего файла с записью в tkinter [страница входа в систему]

#python-3.x #tkinter #tkinter-entry

Вопрос:

В настоящее время я работаю над школьным заданием, которое требует, чтобы пользователь вошел в систему, используя учетные данные из внешнего файла — logininfo.txt — а затем позволяет пользователю играть в кости, но у меня возникают трудности с настройкой tkinter для работы с программой. Я ранее сделал раздел кода [который работал нормально], чтобы проверить данные для входа, но теперь при работе с графическим интерфейсом он больше не работает; По сути, мне нужно знать последний раздел кода (включая и следующие with open('logininfo.txt') as file: ) для работы внутри (или вне) основного цикла, поэтому всякий раз, когда вы нажимаете «Войти» и validateLogin запускаетесь, программа также проверяет внешний файл на наличие слова search_word и возвращает, если пользователь найден. В данный момент он печатает остальную часть инструкции до ввода учетных данных. (Также я удалил некоторый код, который, по моему мнению, не был необходим для этого вопроса) Это первый раз, когда мне когда-либо приходилось использовать tkinter, чтобы извиниться, если ответ очевиден! Спасибо, что уделили мне время.

 def validateLogin(username, password):
    print("username entered :", username.get())
    print("password entered :", password.get())
    return


tkWindow = Tk()  
    tkWindow.geometry('400x150')  
    tkWindow.title('Dice game---Login Page')

#username label and text entry box
usernameLabel = Label(tkWindow, text="UserName").grid(row=0, column=0)
username = StringVar()
usernameEntry = Entry(tkWindow, textvariable=username).grid(row=0, column=1)  

#password label and password entry box
passwordLabel = Label(tkWindow,text="Password").grid(row=1, column=0)  
password = StringVar()
passwordEntry = Entry(tkWindow, textvariable=password, show='*').grid(row=1, column=1)  

validateLogin = partial(validateLogin, username, password)

#login button
loginButton = Button(tkWindow, text="Login", command=validateLogin).grid(row=4, column=0)

with open('logininfo.txt') as file:
        contents = file.read()
        lookup = username
        search_word = str(lookup)
        if search_word in contents:
            print ('user found!')
        else:
            print ('user not found. would you like to sign up?')

tkWindow.mainloop()
 

Комментарии:

1. Переместите with open(...) раздел в validateLogin и замените lookup = username на lookup = username.get()

2. @Генри Спасибо, но, к сожалению, это тоже не работает! Он сразу же печатает «пользователь найден» с нулевым вводом, а затем не отвечает ни на какие логины, которые будут размещены после.

3. Я только что попробовал запустить его и не могу воспроизвести вашу проблему, все, что я сделал, это переместил with блок в validateLogin . Вот код, который я запустил , если это поможет