У меня есть поле ввода tkinter в Python, но я не могу получить вход от него в мой код? - PullRequest
0 голосов
/ 05 июля 2018

Это мой код ниже:

from tkinter import *
login = Tk()

username_1 = Entry()
username_1.pack(side=TOP)
input_username = login.username_1.get("1.0", END)
username = input_username
loginInfo = {"user1": "blue", "user2": "yellow", "user3": "green"}
if username in loginInfo:
    print('Username correct!')

login.mainloop()

Это моя ошибка:

'AttributeError: '_tkinter.tkapp' object has no attribute 'username_1'':

Ответы [ 2 ]

0 голосов
/ 05 июля 2018

Когда вы создаете виджеты, вы создаете дочерние элементы корневого окна. Однако эти дочерние элементы не являются атрибутами корневого окна. Таким образом, login.username_1 недопустимо, как об этом говорит ошибка.

В этом конкретном случае виджет просто username_1 (например: input_username = username_1.get("1.0", END)). Однако даже это не сработает по следующим причинам:

  • метод get записи не принимает аргументов. Вам нужно сделать username_1.get().
  • вы звоните get примерно через одну миллисекунду после создания записи, задолго до того, как у пользователя появится возможность ввести что-либо.

С инструментарием GUI вы не можете думать о том, что ваша программа работает линейно сверху вниз. Вместо этого вы устанавливаете вещи так, чтобы они изначально отображались, а затем вам нужно написать функции, которые реагируют на такие события, как нажатия клавиш и нажатия кнопок. Например, вы можете создать кнопку с меткой «Логин», которая вызывает функцию для проверки правильности учетных данных. Именно в этой функции вы вызываете метод get().

0 голосов
/ 05 июля 2018

Не могли бы вы предоставить информацию о том, что должен делать ваш код?

Если вы просто хотите избежать этой ошибки - измените строку 6 следующим образом:

input_username = username_1.get()
...