非类型错误总是发生,我无法从tkinter wind中删除任何内容

2024-10-03 19:28:10 发布

您现在位置:Python中文网/ 问答频道 /正文

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()

我目前正在添加项目的基础知识,而changelog被破坏了。 错误是:

Exception in Tkinter callback Traceback (most recent call last):
File "/data/data/ru.iiec.pydroid3/files/arm-linux-androideabi/lib/python3.7/tkinter/init.py", line 1705, in call return self.func(*args) File "/data/data/ru.iiec.pydroid3/files/coding folder/alphabet_draw0.0.3.py", line 14, in clogopen window.after(2000, label.destroy_widget) AttributeError: 'NoneType' object has no attribute 'destroy_widget'


Tags: textinfromaddeddatacolumnchangelogwidget
1条回答
网友
1楼 · 发布于 2024-10-03 19:28:10

grid()方法返回None。因此,使用label = Label(window, bg="green", text="""...""").grid(row=5, column=0),实际上是将label设置为None,因此出现了NoneType错误

相反,请先获取label对象,然后应用网格:

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

相关问题 更多 >