Tkinter 中 "update" 和 "update_idletasks" 有什么区别?


update 方法处理所有挂起的空闲任务、未访问的事件、调用函数和回调函数。该方法适用于更新和处理所有事件或任务,例如重绘小部件、几何管理、配置小部件属性等。

它还确保如果应用程序有任何挂起的任务,则它只会更新或刷新影响应用程序整个部分的值。对于单个挂起任务使用update 会很糟糕,因此 Tkinter 还提供了update_idletasks() 方法。它只更新应用程序中由于某种原因而处于稳定状态或未更新的空闲挂起任务。它会调用所有挂起的事件,而不会处理任何其他事件或回调函数。

update() 和 update_idletask() 方法可用于处理任何挂起或空闲任务。但是,update()update_idletasks() 之间的唯一区别在于,update() 处理应用程序中存在的所有事件,而 update_idletasks() 只处理那些未运行或处于稳定状态的事件。

示例

我们可以通过这个例子了解update_idletasks() 方法的用法和应用。

# Import the tkinter library
from tkinter import *
from tkinter import ttk
import time

# Create an instance of tkinter frame
win= Tk()

# Set the size of the Tkinter window
win.geometry("700x350")
def add_Text():
   for i in range(10):
      label.config(text= "The loops starts from 1 to "+ str(i))
      # Wait for two seconds
      win.update_idletasks()
      time.sleep(2)
      label.config(text= i)

# Add a label text
label= Label(win, text="Original Text", font= ('Aerial 16'))
label.pack(pady= 30)

# Add a button to update the Label text
ttk.Button(win, text="Change Text", command= add_Text).pack(pady= 40)
win.mainloop()

输出

运行以上代码将显示一个带有标签小部件和按钮的窗口。

当我们按下按钮时,标签小部件在给定的循环范围内自动更新。

更新于: 2021年6月7日

10K+ 浏览量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告