Python 为什么我无法删除此标签(Tkinter)

Python 为什么我无法删除此标签(Tkinter),python,tkinter,label,destroy,Python,Tkinter,Label,Destroy,我只是在胡闹,用python测试东西。对于一个更大项目的概念验证代码的一部分,我需要创建并删除标签。 不幸的是,在我创建标签并尝试删除它之后,当我尝试删除标签时会出现此错误。销毁标签: AttributeError:“非类型”对象没有属性“销毁” 我听说,如果你的标签上没有任何内容,那么你可能会出现这个错误,因此它是无内容的,但我的标签上有文本。代码如下: from tkinter import* import random import time root = Tk() root.geome

我只是在胡闹,用python测试东西。对于一个更大项目的概念验证代码的一部分,我需要创建并删除标签。 不幸的是,在我创建标签并尝试删除它之后,当我尝试删除标签时会出现此错误。销毁标签:

AttributeError:“非类型”对象没有属性“销毁”

我听说,如果你的标签上没有任何内容,那么你可能会出现这个错误,因此它是无内容的,但我的标签上有文本。代码如下:

from tkinter import*
import random
import time

root = Tk()
root.geometry("800x500")
root.title("amazing")

def one():
    label1 = Label(root, text="one", font=("Comic Sans MS", 30),  fg="purple").pack()
    time.sleep(2)
    label1.destroy()

def two():
    label2 = Label(root, text="two", font=("Comic Sans MS", 30),  fg="purple").pack()
    time.sleep(2)
    label2.destroy()

def doit():
    rchoice = [two, one]
    selected = random.choice(rchoice)
    return selected()

Button = Button(root, text="Button", width=15, height=3, font=("Comic Sans MS", 20), fg="blue", bg="lightgreen", command=doit).pack(pady=50)

root.mainloop()

您的代码有几个问题

如果您试图打印标签的值,您将意识到它实际上是空的。这是因为您在定义小部件之后使用了pack方法,而pack返回None。所以,你需要把它们分开

不要在tkinter中使用睡眠。它会冻结你的主循环。这样做的方法是使用后

这是工作代码

from tkinter import *
import random

root = Tk()
root.geometry("800x500")
root.title("amazing")

def one():
    label1 = Label(root, text="one", font=("Comic Sans MS", 30),  fg="purple")
    label1.pack()
    label1.after(2000, label1.destroy)

def two():
    label2 = Label(root, text="two", font=("Comic Sans MS", 30),  fg="purple")
    label2.pack()
    label2.after(2000, label2.destroy)

def doit():
    rchoice = [two, one]
    selected = random.choice(rchoice)
    return selected()

Button(root, text="Button", width=15, height=3, font=("Comic Sans MS", 20), fg="blue", bg="lightgreen", command=doit).pack(pady=50)

root.mainloop()

您的代码有几个问题

如果您试图打印标签的值,您将意识到它实际上是空的。这是因为您在定义小部件之后使用了pack方法,而pack返回None。所以,你需要把它们分开

不要在tkinter中使用睡眠。它会冻结你的主循环。这样做的方法是使用后

这是工作代码

from tkinter import *
import random

root = Tk()
root.geometry("800x500")
root.title("amazing")

def one():
    label1 = Label(root, text="one", font=("Comic Sans MS", 30),  fg="purple")
    label1.pack()
    label1.after(2000, label1.destroy)

def two():
    label2 = Label(root, text="two", font=("Comic Sans MS", 30),  fg="purple")
    label2.pack()
    label2.after(2000, label2.destroy)

def doit():
    rchoice = [two, one]
    selected = random.choice(rchoice)
    return selected()

Button(root, text="Button", width=15, height=3, font=("Comic Sans MS", 20), fg="blue", bg="lightgreen", command=doit).pack(pady=50)

root.mainloop()