【发布时间】:2022-01-06 21:55:43
【问题描述】:
我正在尝试为一个简单的游戏制作一个模式,您可以在其中使用 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();时间一到就可以打电话。例如:timerlabel.after(1000, some_func). -
并且不要每次都删除/重新创建标签。
timerdisplay.config( text=t )将更新现有控件。 -
你需要使用线程
-
@GabeMorris -- 不,他们没有。线程不是每秒一次的计时器的答案,您不能从线程更新 UI。事件就是答案,使用
.after()。 -
@GabeMorris:他们绝对不需要线程来解决这么简单的问题。