1

我正在尝试重现 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

谢谢

4

1 回答 1

3

您将创建一个函数来添加标签或更改标签,然后请求它在将来运行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没有效果。小部件只能由packplace或之一管理grid,并且您使用的最后一个“获胜”。

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

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

于 2015-02-01T15:00:27.177 回答