этот ответ

от вопрос уже есть ответ здесь:

Почему мои виджеты Tkinter хранятся как None? [Дубликат] 1 ответ
#AttributeError: 'NoneType' object has no attribute ... Example

try:                        # In order to be able to import tkinter for
    import tkinter as tk    # either in python 2 or in python 3
except ImportError:
    import Tkinter as tk

root = tk.Tk()

widget = tk.Label(root, text="Label 1").grid()
widget.config(text="Label A")

root.mainloop()

Выше код выдает ошибку:

Traceback (most recent call last):
  File "C:\Users\user\Documents\Python\other\script.py", line 8, in <module>
    widget.config(text="Label A")
AttributeError: 'NoneType' object has no attribute 'config'

Точно так же кусок кода:

#TypeError: 'NoneType' object does not support item assignment Example

try:                        # In order to be able to import tkinter for
    import tkinter as tk    # either in python 2 or in python 3
except ImportError:
    import Tkinter as tk

root = tk.Tk()

widget = tk.Button(root, text="Quit").pack()
widget['command'] = root.destroy

root.mainloop()

выдает ошибку:

Traceback (most recent call last):
  File "C:\Users\user\Documents\Python\other\script2.py", line 8, in <module>
    widget['command'] = root.destroy
TypeError: 'NoneType' object does not support item assignment

И в обоих случаях:

>>>print(widget)
None

Почему это, почемуwidget хранится какNone, или почему я получаю ошибки выше, когда пытаюсь настроить свои виджеты?

Этот вопрос основан наэто и его просят дать обобщенный ответ на многие связанные и повторяющиеся вопросы по этому вопросу. Видетьэто для редактирования отклонения.

Ответы на вопрос(1)

Решение Вопроса

widget хранится какNone потому что методы менеджера геометрииgrid, pack, place вернутьNoneи, следовательно, они должны быть вызваны наотдельная строка чем строка, которая создает экземпляр виджета, как в:

или же:

widget = ...
widget.pack(..)

или же:

widget = ...
widget.place(..)

И для 2-го фрагмента кода в вопросе конкретно:

widget = tkinter.Button(...).pack(...)

должен быть разделен на две строки как:

widget = tkinter.Button(...)
widget.pack(...)

Информация:Этот ответ на основе, если не по большей частископированный из,этот ответ.

Ваш ответ на вопрос