проблема вызова метода с Python - PullRequest
2 голосов
/ 02 марта 2011

Итак, я изучаю python, и у меня, похоже, есть постоянная проблема с вызовом setText() методов для Text объектов. Процесс работает нормально, когда я в интерактивном графическом интерфейсе IDLE, но когда я сохраняю модули, а затем пытаюсь их запустить, я получаю:

nonetype объект не имеет атрибута setText

Нужно ли присваивать какой-либо тип возвращаемого значения текстовому присваиванию? Почему бы отличаться поведение от IDLE к сохраненным модулям? Я искал сайт и документацию по Python и не смог ничего найти. Любая помощь будет высоко ценится.

message1 = Text(Point(50,50), "Click).draw(win)
message1.setText("")

Отредактировано, чтобы добавить…

Спасибо, Гео, твое предложение исправило вещи.

Теперь мой вопрос: в чем разница между ...

message = Text(Point(50,50), "Click").draw(win)

… и…

message = Text(Point(50,50), "Click")
message.draw(win)

… в отношении возврата чего-либо или обеспечения наличия у объекта message type, который поддерживает определенные функции?

Ответы [ 2 ]

3 голосов
/ 02 марта 2011

Возможно, метод draw ничего не возвращает.Попробуйте изменить свой код на это:

message1 = Text(Point(50,50), "Click")
message1.draw(win)
message1.setText("")
2 голосов
/ 02 марта 2011

Я не уверен, как правильно ответить на ваш второй вопрос .. поэтому я просто сделаю это в качестве ответа здесь.

Причина, по которой первый не работает, заключается в том, что вы присваиваете возвращаемое значениеText.draw к сообщению.Поскольку он ничего не возвращает, то сообщение равно None.

. В рабочем коде вы присваиваете сообщение с типом Text и инициализируете объект.Затем вы вызываете метод draw этого объекта и метод setText.

В нерабочем коде вы вызываете метод draw для нового объекта Text, затем присваиваетевозврат этого - то есть, NoneType - к сообщению.А так как None не имеет метода setText, вы получаете ошибку.

(Извините, если я перепутал NoneType и None там)

...