effbot.org文档中,我们了解了关于update函数的以下内容:

处理所有挂起的事件,调用事件回调,完成任何

另一方面,关于update_idletasks函数有以下几点:

调用所有挂起的空闲任务,而不处理任何其他事件.

据我所知,call all pending idle taskscomplete any pending geometry managementredraw widgets as necessary都是.我看到的唯一区别是update processes all pending eventscalls event callbacks.我想这就是为什么我们不应该在一次偶数回调中调用update.

然而,我已经看到examples,其中update_idletasksupdate被一个接一个地使用,我不明白原因,因为理论上updateupdate_idletasks做的一切.

文档中提到的pending eventsidle tasks究竟是什么?有什么区别和联系?

既然如此,在什么样的实际情况下,我应该使用updateupdate_idletasks?具体的例子也值得赞赏.

推荐答案

我看到的唯一区别是更新处理所有挂起的事件

这两方面你都是对的.

什么是悬而未决的事件?活动安排在after人左右,大部分时间.正如你在问题中提到的,触发重画的事件.

在什么情况下你应该使用updateupdate_idletasks?几乎从来没有.老实说,我务实的回答是"永远不要打update,除非打update_idletasks不够".

需要记住的重要一点是,在处理all个事件之前,需要update个块.实际上,这意味着mainloop嵌套在mainloop中.在一个无限的循环中永远不要有一个好主意.

如果你看到一个接一个的例子,你看到的是糟糕的例子.老实说,绝对没有理由这么做.我看到的许多代码调用的频率比它应该看到的要高update倍.

Python-3.x相关问答推荐

CONNEXION.EXCEPTIONS.ResolverError:运行pyz文件时未命名模块

在Python中从列创建新行

文件名中的文件打开和撇号

三重奏:为什么频道被记录为使用async with,而不是with?

提高时间复杂度的一些建议

为什么 mypy 不适用于 sqlalchemy?

pip 找不到最新的软件包版本

SMTP 库 Python3:不太安全的应用程序访问

段落中句子的索引

如何将虚拟变量列转换为多列?

Python socket.error: [Errno 13] 权限被拒绝

简单的 get/post 请求在 python 3 中被阻止,但在 python 2 中没有

理解 Keras 的 ImageDataGenerator 类中的 `width_shift_range` 和 `height_shift_range` 参数

TensorFlow:dataset.train.next_batch 是如何定义的?

Python 3 与 Python 2 映射行为

TypeError: write() 参数必须是 str,而不是字节(Python 3 vs Python 2)

将列表列表转换为Python中的字典字典

在 linux mint 上安装 python3-venv 模块

如何对字典的函数输出列表进行单元测试?

为什么某些代码在 Python2 中是确定性的,而在 Python 3 中是非确定性的?