【问题标题】:Is there any way to make a label in Tkiner forget its data?有没有办法让 Tkinter 中的标签忘记它的数据?
【发布时间】:2018-02-12 15:10:32
【问题描述】:

大家好,我想制作一个网络钓鱼 python 程序(用于教育目的)!
这是我想向我的班级和同学们展示的东西。
无论如何,我希望该功能将数据显示到标签中仅几秒钟,然后消失,就像我从未调用过它一样。
先感谢您 !

def sel():
    varl = ["Profile Hacking","Page Hacking","See who's watching your profile"]
    selection = '"'+varl[var.get()]+'" Option activated !'
    label = Label(root,text=selection)
    label.grid(row=6,column=0)

【问题讨论】:

  • 有几种方法,这取决于你的“忘记”是什么意思。您可以将标签值设置为空字符串,可以隐藏标签小部件,也可以销毁标签小部件。

标签: python tkinter label


【解决方案1】:

查看此链接,它提出了与您类似的问题:How to make a Label appear then disappear after a certain amount of time in python tkinter

此链接中的答案使用 .after() 方法,您可以在给定时间后解压缩标签小部件或将其销毁。他还展示了一个编码示例。

您还可以查看此链接,该链接将允许您更新标签文本并使用 .after() 方法,您可以在事件或 x 时间后执行此操作:How to make a Tkinter label update?

祝你好运,编码愉快!

【讨论】:

    【解决方案2】:

    谢谢@mgracer,
    但你的想法并没有帮助我解决我的问题。
    这行做了:

     root.after(2000, label.destroy)
    

    【讨论】:

      【解决方案3】:

      尝试:

       label.grid_remove()
       root.after(3000, label.destroy)
      

      这应该会破坏标签

      label = None
      del label
      

      但如果您不想摆脱标签,请执行以下操作:

      label = Label(root,text='')
      label.grid(row=6, column=0
      

      【讨论】:

      • @Kostas Petrakis 请问我的代码为你做了什么以及两者都没有工作它将帮助我的编码:)
      • 你不应该在 GUI 中使用sleep(除非它在不同的线程中运行)。也没有充分的理由将它放在任意大的行和列中。
      • 有什么替代方法可以用于睡眠并将网格设置为窗外?我猜后面的事情?
      • 睡眠的替代方法取决于您要完成的工作。至于网格,如果您想保留小部件但将其从视图中删除,只需使用grid_removegrid_forget。注意:after(3)sleep 相同,你不应该这样做。它会导致整个 GUI 冻结。
      • 不,现在您的after 示例中有语法错误,而且您只是使用错误。它必须是root.after(3000, label.destroy)。您还应该提到它不仅仅是“将标签设置在窗外”。它的作用不止于此——它破坏了标签。
      猜你喜欢
      • 1970-01-01
      • 2018-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-29
      • 1970-01-01
      相关资源
      最近更新 更多