Python tkinter 在 2 秒后删除标签
Posted
技术标签:
【中文标题】Python tkinter 在 2 秒后删除标签【英文标题】:Python tkinter removing label after 2 seconds 【发布时间】:2022-01-05 10:33:26 【问题描述】:我试图在满足条件时让标签出现 2 秒。 用户应该输入 3 个字段,如果他们不输入,我不希望他们被允许继续。无论采用哪种方法,我都无法删除这个名为“warnlabel”的标签。请让我知道我做错了什么。
def get_API_KEYS(): #Main function
root = Tk()
"""...other declarations / conditions / window settings ..."""
def Save_KC_Keys(): #Button press triggers this function
if len(UE1_var.get()) == 0 or len(UE2_var.get()) == 0 or len(UE3_var.get()) == 0:
warnlabel = Label(root, text="MUST ENTER ALL 3").grid(row=1, column=3)
#root.forget(Label)
#root.after(1000, root.destroy(warnlabel))
#root.forget(warnlabel)
"""...other conditions..."""
root.mainloop()
我尝试过 .forget / .destroy / .after (我更喜欢 .after 工作),但是在几乎每个配置中我都会收到如下错误:
return getattr(self.tk, attr)
AttributeError: '_tkinter.tkapp' object has no attribute '_name'
root.after(1000, root.destroy(warnlabel))
TypeError: Tk.destroy() takes 1 positional argument but 2 were given
self.tk.call('wm', 'forget', window)
_tkinter.TclError: wrong # args: should be "wm option window ?arg ...?"
【问题讨论】:
【参考方案1】:尝试做
root.after(2000, lambda: warnlabel.destroy())
尝试在没有 lambda 的情况下使用它。
还有变化
warnlabel = Label(root, text="MUST ENTER ALL 3").grid(row=1, column=3)
到这里
warnlabel = Label(root, text="MUST ENTER ALL 3")
warnlabel.grid(row=1, column=3)
【讨论】:
这里不需要lambda
。你可以使用它,但它是不必要的。
使用 Lambda:Tkinter 回调回溯中的异常(最近一次调用最后一次):文件“C:\Users\BEAST\AppData\Local\Programs\Python\Python310\lib\tkinter_init_.py",第 1921 行,在 call 中 return self.func(*args) File"C:\Users......\Python310\lib\tkinter_init_.py”,第 839 行,在 callit func(*args) 文件“C:\Users\BEAST\PycharmProjects\WebScraping\GUI_Test.py”,第 77 行,在 以上是关于Python tkinter 在 2 秒后删除标签的主要内容,如果未能解决你的问题,请参考以下文章