Проблема, как поясняется в разделе комментариев, заключается в том, что вы делаете это:
label1=Label(...).pack(...)
В результате label1
будет None
. Когда бы вы делали x=foo().bar()
, x
всегда будет установлен на результат bar()
. В этом случае результат pack(...)
всегда будет None
, поэтому label1
всегда будет None
. И, очевидно, None
не имеет метода с именем pack_forget
.
Решение отделить виджет создание от макета виджета:
label1 = Label(...)
label1.pack(...)
Для решения вопроса в названии: чтобы удалить виджет с экрана, вы можете использовать pack_forget()
или grid_forget()
, в зависимости от того, используется ли вы pack
или grid
на этом виджете. Помните, что это не уничтожить виджет, он удаляет его только из вида.
Чтобы полностью удалить виджет, вызовите метод destroy()
, который удалит виджет и удалит его из виду.
Код в вашем вопросе не даст ошибку, о которой вы говорите. Создает ли ваш фактический код такой ярлык: 'label1 = Label (...). Pack (...)'? –
Да, фактический код делает этот ярлык таким. это пример моей проблемы. Кстати, я запускаю python 2.7.5, если эта информация помогает, спасибо. – WaydeHall
Итак, вы просите нас отладить ваш код, показывая нам код, который не является вашим кодом. В будущем, если вы хотите получить помощь, покажите нам фактический код, который демонстрирует проблему, пожалуйста. –