如何在标签出现在 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 只能由 pack
、place
或 grid
之一管理,最后一个使用 "wins".
如果您使用的是 place
,在五秒内放置一些内容应该或多或少会如您所料。如果您使用 pack
,请记住它可能会导致您的 window 调整大小,如果没有任何选项,它将出现在其父级 window 的底部。
最后,根据您实际要执行的操作,您可能需要考虑立即创建并打包标签,但将其留空。然后,五秒钟后,您可以将文本从空白字符串更改为其他内容。
我正在尝试重现口袋妖怪红色战斗场景,我需要在第一个角色出现(好人)和第二个(坏人)出现之间有 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 只能由 pack
、place
或 grid
之一管理,最后一个使用 "wins".
如果您使用的是 place
,在五秒内放置一些内容应该或多或少会如您所料。如果您使用 pack
,请记住它可能会导致您的 window 调整大小,如果没有任何选项,它将出现在其父级 window 的底部。
最后,根据您实际要执行的操作,您可能需要考虑立即创建并打包标签,但将其留空。然后,五秒钟后,您可以将文本从空白字符串更改为其他内容。