如何在标签出现在 tkinter 之前添加时间延迟?

How to add a time delay before a label appears in tkinter?

我正在尝试重现口袋妖怪红色战斗场景,我需要在第一个角色出现(好人)和第二个(坏人)出现之间有 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 post 但是我不确定如何将其实现到我的代码中:Time delay Tkinter

谢谢

您将创建一个函数来添加标签或更改标签,然后使用 after:

请求将来成为 运行

首先,创建函数:

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

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

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

这直接回答了您的问题,但您还有其他几个问题。第一,如果您调用 pack 然后在同一个小部件上调用 place,则 pack 无效。一个 widget 只能由 packplacegrid 之一管理,最后一个使用 "wins".

如果您使用的是 place,在五秒内放置一些内容应该或多或少会如您所料。如果您使用 pack,请记住它可能会导致您的 window 调整大小,如果没有任何选项,它将出现在其父级 window 的底部。

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