WedX - журнал о программировании и компьютерных науках

Почему вместо объекта tkinter.Entry возвращается None?

Я новичок в python, ковыряюсь и заметил это:

from tkinter import *
def test1():
    root = Tk()
    txtTest1 = Entry(root).place(x=10, y=10)
    print(locals())
def test2():
    root = Tk()
    txtTest2 = Entry(root)
    txtTest2.place(x=10, y=10)#difference is this line
    print(locals())
test1()
test2()

выходы содержат:

'txtTest1': None

'txtTest2': <tkinter.Entry object at 0x00EADD70>

Почему test1 имеет None вместо <tkinter.Entry object at ...?

Я использую Python 3.2 и PyScripter.


Ответы:


1

Метод place для Entry не возвращает значение. Он действует на месте существующей переменной Entry.

03.08.2011
  • Спасибо, я предполагал, что он вернет запись с этим местоположением, но ваш ответ имеет большой смысл. 04.08.2011

  • 2

    потому что Entry.place() возвращает None

    на более C-подобном языке вы могли бы сделать:

    (txtTest1 = Entry(root)).place(x=10, y=10)
    

    а txtText1 будет объектом Entry, но такой синтаксис недопустим в Python.

    03.08.2011
  • Спасибо, я сделал кое-что на С++/С# в прошлом, так что это имеет смысл для меня. 04.08.2011

  • 3

    Вы создаете объект (txtTest1), а затем вызываете метод для этого объекта (place). Поскольку вы кодируете это как одно выражение, возвращается результат конечного метода. place возвращает None, поэтому txtTest1 заменяется на None.

    Если вы хотите сохранить ссылку на виджет, вам нужно отделить создание от макета (что в любом случае полезно сделать...)

    txtTest1 = Entry(root)
    txtTest1.place(x=10, y=10)
    
    03.08.2011
    Новые материалы

    Объяснение документов 02: BERT
    BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..


    Для любых предложений по сайту: [email protected]