【问题标题】:How to add a time delay before a label appears in tkinter?如何在标签出现在 tkinter 之前添加时间延迟?
【发布时间】:2015-02-01 14:44:44
【问题描述】:

我正在尝试重现 Pokemon 红色战斗场景,我需要在第一个角色出现(好人)和第二个角色出现(坏人)之间有 5 秒的延迟。我已经尝试过 time.sleep() 方法,但是它在启动程序之前只等待 5 秒(睡眠时间)。

#Add Person
label = Label(image=diglett, bg= "white")
label.place(x=20, y=80)
#Add Enemy (I want a 5 second delay here...)
label2 = Label(image=bad_guy, bg= "white")
label2.place(x=200, y=20)
label2.after(100)
bad_guy_name = Label(root, text="Cabbage", bg='white')
bad_guy_name.place(x=35, y=30)

我已经看到另一个关于此的 Stack Overflow 帖子,但是我不确定如何在我的代码中实现它:Time delay Tkinter

谢谢

【问题讨论】:

标签: python tkinter delay tk timedelay


【解决方案1】:

您将创建一个函数来添加标签或更改标签,然后使用after 请求它在未来运行:

首先,创建函数:

def showLabel():
    label = Label(root, ...)
    label.place()

接下来,通过after从您的主代码调用它:

#Add Enemy (I want a 5 second delay here...)
root.after(5000, showLabel)

这直接回答了您的问题,但您还有其他几个问题。一、如果你调用pack,然后在同一个widget上调用placepack没有效果。一个小部件只能由packplacegrid 之一管理,最后一个使用“wins”。

如果您使用的是place,则在五秒钟内放置一些东西应该或多或少如您所愿。如果您使用pack,请记住它可能会导致您的窗口调整大小,并且如果没有任何选项,它将出现在其父窗口的底部。

最后,根据您实际尝试执行的操作,您可能需要考虑立即创建和包装标签,但将其设置为空白。然后,五秒钟后,您可以将文本从空白字符串更改为其他内容。

【讨论】:

  • 谢谢。这很好用。我也摆脱了.pack。我对 tkinter 真的很陌生(大约两周),很抱歉出现这些愚蠢的错误:S。再次感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-03
  • 1970-01-01
  • 1970-01-01
  • 2022-12-02
  • 2021-07-22
相关资源
最近更新 更多