如何使 tkinter Canvas 仅按需更新?

How to make tkinter Canvas update only on-demand?

我正在 Python 中编写图形程序,我想知道如何仅按需进行 Canvas 更新;也就是说,停止 canvas 更新事件循环的每个 运行,而是仅在我告诉它时才更新。

我想这样做是因为在我的程序中我有一个单独的线程从标准输入读取图形数据以防止阻塞事件循环(假设没有可靠的、可移植的方式来轮询标准输入 Python,而且轮询很糟糕),但我希望屏幕仅在一定时间间隔内更新,而不是在单独的线程开始读取输入时更新。

您不能在不暂停整个 GUI 的情况下暂停 canvas 的更新。

一个简单的解决方案是,在您准备好更新之前不要绘制到 canvas。不要调用 canvas 命令,而是将这些命令推送到队列中。当您准备好刷新显示时,迭代命令和 运行 它们。

你也可以做你自己的双缓冲,你有两个 canvases。您正在主动绘制的那个会在可见的后面。当您准备好显示结果时,交换 canvases 的堆叠顺序。