【发布时间】:2021-12-28 07:24:30
【问题描述】:
下面的代码打开一个 tkinter 窗口,标签显示“0”,当按下按钮时,20 秒后,标签显示“9”。
相反,我尝试定期更新标签,每 2 秒显示 0 到 9 的数字,而不是仅显示 0 和 9。
import tkinter as tk
from tkinter import Label, Button
import time
root = tk.Tk()
label = Label(root, text=0)
label.pack()
def loop():
for i in range(10):
time.sleep(2)
label.config(text=i)
Button(root, text='Press me!',command=loop).pack()
root.mainloop()
提前谢谢你
【问题讨论】:
-
不要使用
time.sleep,也不要使用循环,使用after来“循环”,这个网站和其他地方有很多关于如何做到这一点的例子 -
对。重要的是要记住所有 GUI 框架都是事件驱动的。创建或更新 UI 元素时,不会绘制任何内容。那只是发送一个消息。在您返回
root.mainloop之前无法处理该消息。在您的处理程序返回之前,UI 将完全冻结。处理程序需要短暂运行并返回。