我是 tkinter 的新手。有时当我从github上读取代码时,它包含这样的代码root.update()
.
当我搜索 tkinter 的文档时,我通常会找到每个小部件的方法列表,但找不到Tk()
根对象本身。另外,通常当我为每个小部件设置配置时,它会自动更新视图。所以我有点困惑我应该什么时候使用root.update()
?
答案应该是never。即使您的代码适用于.update()
无法保证它会这样做。简单的回答是,您永远不会知道此时此刻您正在使用此命令做什么。使用.update_idletasks()
反而。
出于docs:
更新服务所有未完成的事件,包括到期的事件
当更新正在运行时。提供它是为了允许执行诸如
刷新 GUI 会立即发生。协程提供了另一种方式
构建代码,以便可以在战略点为事件提供服务
在控制流程中。甚至在协程可用之前,许多Tcl
程序员发现,如果出现需要使用更新的情况,这是一个线索
应该重组脚本。
更新的工作原理是循环执行以下步骤,直到没有
事件在一次迭代中得到服务:
为预定时间已到的第一个活动提供服务。如果没有这样的
找到事件,为当前空闲队列中的所有事件提供服务,但是
不是此步骤开始后添加的那些。
更新空闲任务跳过第一步,仅处理
空闲队列。
为什么有害?
问题是更新实际上具有不受限制的副作用。
调用 update 的代码不知道任何随机事件处理程序
更新过程中可能对其数据进行了处理。这
事实上,这是阴险的错误的根源。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)