[英]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.