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)
我正在尝试为一个简单的游戏制作一个模式,您可以使用 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)