Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

В чем тут ошибка питон

Rob0t135 Мыслитель (9369), на голосовании 1 месяц назад
 from tkinter import * 

names = []
passwords = []

def createacc():
list.append(names, entry1.get())
list.append(passwords, entry2.get())
print(names)
print(passwords)

create = Tk()
create.title('create account')
create.geometry()

entry1 = Entry(width=25).grid(column=0, row=0)
entry2 = Entry(width=25).grid(column=0, row=1)
but = Button(width=25, text='Create', command=createacc).grid(column=0, row=2)
     list.append(names, entry1.get()) 
AttributeError: 'NoneType' object has no attribute 'get'
Голосование за лучший ответ
Полковник Блекджек Знаток (396) 2 месяца назад
прямым языком написано, но нет, "я не панимаюю ну пичимууу"
Rob0t135Мыслитель (9369) 2 месяца назад
почему он воспринимает строку как "NoneType"?
Полковник Блекджек Знаток (396) Rob0t135, функция пытается обратиться к локальной переменной, которая пока не существует. попробуй перенести entry1, entry2 до определения функции с ключевым словом global
Полковник БлекджекЗнаток (396) 2 месяца назад
тогда у тебя ошибка в том, что ты как только создаёшь класс Entry(width=25) вызываешь метод .grid(column=0, row=0) - а он возвращает None, соответственно у тебя в переменную entry1/entry2 записывается None
GGG Просветленный (37500) 2 месяца назад
Слушай, ты пытаешься добавить значения в списки names и passwords с помощью entry1.get() и entry2.get() вне функции createacc() и до того, как кнопка нажата. В этот момент entry1 и entry2 еще не содержат введенного пользователем текста, потому что .grid() возвращает None. Ты присваиваешь None переменным entry1 и entry2, а потом пытаешься вызвать у None метод .get(). Отсюда и ошибка AttributeError: 'NoneType' object has no attribute 'get'. Убери list.append(names, entry1.get()) из глобальной области видимости. Тебе нужно получать значения из полей ввода только внутри функции createacc(), после того, как пользователь нажмет кнопку.
Похожие вопросы