Функции grid
, pack
и place
объекта Entry
и всех других виджетов возвращают None
. В python, когда вы делаете a().b()
, результат выражения - это то, что возвращает b()
, поэтому Entry(...).grid(...)
вернет None
.
Вы должны разделить это на две строки следующим образом:
entryBox = Entry(root, width=60)
entryBox.grid(row=2, column=1, sticky=W)
Таким образом вы получите свою Entry
ссылку, сохраненную в entryBox
, и она выложена, как вы ожидаете. Это имеет бонусный побочный эффект, заключающийся в том, что ваш макет легче понять и поддерживать, если вы собираете все свои grid
и / или pack
операторы в блоках.
Это означает, что вы пытаетесь использовать какую-либо форму перекрестного доступа, что небезопасно - хотя это может показаться безобидным, вероятно, стоит попытаться выяснить, почему вы выполняете его, если вы используете ночные или бета-версию Safari4 может использовать отладчик в веб-инспекторе и заставить его работать со всеми исключениями, что позволит вам увидеть, когда он на самом деле пытается получить доступ из разных источников.
Что касается зависаний, если вы можете найти какой-то уменьшенный тестовый сценарий, было бы здорово, если бы вы могли подать их на http://bugs.webkit.org
Это красная сельдь. Запрос все еще проходит, и все работает правильно, но WebKit все еще регистрирует исключение.
Межфреймовая безопасность Safari более жесткая, чем в других браузерах, я сделал специальные оболочки try / catch для обработки этих случаев, если это работает иначе, отлично.
В любом случае, сообщение об ошибке будет опубликовано выше, как предполагает olliej.