2014-10-24 4 views
-1

Я пишу функцию, которая принимает объект textbox из библиотеки tkinter в качестве аргумента. Когда я заполняю в текстовом поле и нажмите на кнопку, я получаюAttributeError: объект 'NoneType' не имеет атрибута 'get'

"AttributeError: 'NoneType' object has no attribute 'get'." 

Я точно знаю, что объект имеет текстовое поле получить() в качестве функции. Я даже импортировал библиотеку tkinter в файл с моей функцией. Вот упрощенная версия того, что я пытаюсь сделать в двух файлах:

главная:

import tkinter 
import save_file 
app = tkinter.Tk() 
textbox = tkinter.Text(app).pack() 
button = tkinter.Button(app, command=lambda: save_file.save_file(textbox)) 

save_file:

import tkinter 
def save_file(textbox): 
    text = textbox.get() 

Может кто-нибудь сказать мне, что я делаю неправильно?

+0

Я не уверен, что это ближайший DUP на этот вопрос, но вы можете найти много других в Linked и связанных с ними списков оттуда. – abarnert

ответ

3

pack()None; Вы хотите сохранить толькоText() объект, а затем вызвать pack() на него отдельно:

textbox = texinter.Text(app) 
textbox.pack() 
+0

Да, это все, что нужно. Потрясающие! Благодаря! Чтобы прояснить это, проблема заключалась в том, что мой выбор синтаксиса фактически присваивал значение, возвращаемое пакетом(), моей переменной? – user3291465

+0

Точно; вы привязали вызовы, и возвращаемое значение 'texinter.Text()' использовалось для поиска метода 'pack', и выражение заканчивается тем, что производит последний вызов метода, а не промежуточные результаты. –

0

не tkinter.Text(app).pack() возвращает None, так что вы установите textbox равным None

Изменить на:

textbox = tkinter.Text(app) 
textbox.pack() 
0

Ваш проблема в том, что метод .pack() на текстовом объекте tkinter возвращает None.

Исправление:

import tkinter 
import save_file 
app = tkinter.Tk() 
textbox = tkinter.Text(app) 
textbox.pack() 
button = tkinter.Button(app, command=lambda: save_file.save_file(textbox)) 
Смежные вопросы