#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
. Вот код, который я запустил , если это поможет