簡體   English   中英

Tkinter.after() 凍結 window

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM