Python 不暂停整个程序的计时器

Python timer that doesn't pause the whole program

我正在尝试为一个简单的游戏制作一个模式,您可以使用 tkinter 在物品掉落时接住它们。

在此模式下,您有 60 秒的时间来抓取尽可能多的物品。我尝试过的所有计时器方法都会暂停整个程序

...尝试使用空标签,但 .after 暂停了整个程序

timerlabel = tkinter.Label(text="")
def timer():
    global t, timerdisplay
    while t > 0:
        t -= 1
        timerlabel.after(1000)
        c.delete(timerdisplay)
        timerdisplay = c.create_text(200, 12, text=t)
        c.update()

知道怎么做吗?

这是更好的方法,特别是因为 after(n) 在给定的时间段内冻结程序。创建一个接受数字并显示该数字的函数。然后,它减一,然后将自己重新安排到 运行 未来一秒,直到数字变为零。

def timer(t):
    global timerdisplay
    c.delete(timerdisplay)
    timerdisplay = c.create_text(200, 12, text=t)
    if t >= 1:
        c.after(1000, timer, t-1)
timer(timerdisplay, 10)

要对此进行优化,您可以将 canvas 项连同数字一起传递。您也可以只重新配置文本项,而不是删除和恢复它。

def timer(timerdisplay, t):
    c.itemconfigure(timerdisplay, text=t)
    if t >= 1:
        c.after(1000, timer, timerdisplay, t-1)
timerdisplay = c.create_text(200, 12)
timer(timerdisplay, 10)