Всегда возникает ошибка NoneType, и я ничего не могу удалить из окна tkinter - PullRequest
0 голосов
/ 16 апреля 2019
from turtle import *
from tkinter import *
window = Tk()
window.config(background="green")
window.bind("<Escape>", quit)
def clogopen():
label = Label(window, bg="green", text="""Changelog:
0.0.1:
    Added title
    Added caps
0.0.2:
    Added Changelog button
    Added Changelog""").grid(row=5, column=0)
    window.after(2000, label.destroy_widget)#this is where I get the error
lab1 = Label(bg="red", fg="white",  text="Welcome to alphabet draw 0.0.2!").grid(rowspan=2, column=0)
cbttn = Checkbutton(text="Caps?").grid(row=3, column=0)
clogbttn = Button(bg="yellow", text="Open Changelog", command=clogopen).grid(row=4,  column=0)
speed(0)
window.mainloop()

В настоящее время я добавляю основы проекта, и список изменений нарушен.Ошибка:

Исключение в обратном вызове Tkinter (последний вызов последним):
Файл "/data/data/ru.iiec.pydroid3/files/arm-linux-androideabi/lib/python3.7/tkinter/init.py ", строка 1705, в вызов вернуть файл self.func (* args)" /data/data/ru.iiec.pydroid3/files / coding folder / alphabet_draw0.0.3.py ", строка 14, в clogopen window.after (2000, label.destroy_widget) AttributeError: у объекта NoneType нет атрибута destroy_widget

1 Ответ

1 голос
/ 16 апреля 2019

Метод grid() возвращает None.Таким образом, с label = Label(window, bg="green", text="""...""").grid(row=5, column=0) вы по существу устанавливаете label на None, следовательно, ошибка NoneType.

Вместо этого сначала получите объект метки, а затем примените сетку:

label = Label(window, bg="green", text="""...""")
label.grid(row=5, column=0)

А чтобы уничтожить label, используйте label.destroy (не label.destroy_widget):

window.after(2000, label.destroy)

Полный код и демоверсию: https://repl.it/@glhr/55705699-tkinter-turtle

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...