【问题标题】:Why Am I Unable To Remove This Label (Tkinter)为什么我无法删除此标签(Tkinter)
【发布时间】:2019-05-05 03:13:19
【问题描述】:

我只是在 python 中乱搞和测试东西。对于一个更大项目的概念验证代码的一部分,我需要创建然后删除标签。 不幸的是,在我创建标签然后尝试将其删除后,当我尝试.destory() 标签时出现此错误:

AttributeError: 'NoneType' object has no attribute 'destroy'

我听说如果您的标签中没有任何内容,您可能会收到此错误,因此它是“无”,但我的标签有文字。代码如下:

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

【问题讨论】:

    标签: python tkinter label destroy


    【解决方案1】:

    您的代码存在一些问题。

    1. 如果你尝试打印标签的值,你会发现它实际上是None。那是因为您在定义小部件之后就使用了pack() 方法,而pack() 返回None。所以,你需要把它们分开。

    2. 避免在 tkinter 中使用 sleep()。它会冻结你的主循环。方法是使用after()

    这是工作代码。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多