[英]Tkinter .after() freezes window
我正在尝试使用 tkinter 制作一个脚本,该脚本使用.after() 一个接一个地显示一些元素(不是同时显示所有元素)。
我遇到的问题是所有元素在整体等待时间结束后同时显示(整体等待时间=每个元素的单个时间的总和)。
我检查了 web 上的许多示例,我想我使用的 .after() 方法是错误的,但我就是不知道为什么。
我希望以下代码更新 label 在每个循环后等待 0.5 秒。 尽管如此,我得到的是总等待 3 秒,之后 tkinter window 出现,显示列表的最后一个元素。
import tkinter as tk
import random
grid = [1, 2, 3, 4, 5, 6]
root = tk.Tk()
canvas = tk.Canvas(root, width=200, height=200)
canvas.pack()
def refresh():
for i in range(len(grid)):
text = grid[i]
label.configure(text=text)
root.after(500)
label = tk.Label(canvas, text='0', font='Courier 18')
label.place(relx=0.45, rely=0.4)
refresh()
root.mainloop()
提前致谢!
是的,这很正常,但是您必须在时间延迟后添加处理程序。 如果不这样做,计算机只会冻结程序,直到时间用完。
尝试这个:
root.after(500, handler)
它的作用是为处理程序创建一个 function,在 500 毫秒后,程序将调用该 function。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.