упаковка Python Tkinter - PullRequest
       11

упаковка Python Tkinter

1 голос
/ 17 января 2012

Может кто-нибудь объяснить, почему, когда у вас есть простой виджет в виде одной строки, код А работает

Entry(root, width=10).pack(side=LEFT,anchor=W)

, но когда вы называете его или присоединяете к нему команду, код А больше не работает и выдает ошибкуСообщение B

self.my_entry = Entry(root, width=10).pack(side=LEFT,anchor=W)

, и вы должны упаковать, используя отдельную линию?

self.my_entry = Entry(root, width=10)
self.my_entry.pack(side=LEFT,anchor=W)

Код A

self.my_entry.get()

Сообщение об ошибке B

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

1 Ответ

6 голосов
/ 17 января 2012

Метод pack возвращает None.Поэтому

self.my_label = Label(root, text="My Label").pack(side=LEFT,anchor=W)

устанавливает self.my_label в None.Вот почему дальнейшие команды, использующие self.my_label, больше не работают.

Вы нашли решение;позвоните pack на отдельной линии:

self.my_label = Label(root, text="My Label")
self.my_label.pack(side=LEFT,anchor=W)
...