如何使tkinter Canvas仅按需更新?

时间:2017-11-16 18:57:00

标签: python-3.x tkinter tkinter-canvas

我正在用Python编写图形程序,我想知道如何按需制作Canvas更新;也就是说,停止画布更新事件循环的每次运行,而只在我告诉它时更新。

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

1 个答案:

答案 0 :(得分:3)

如果不暂停整个GUI,则无法暂停画布的更新。

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

你也可以做自己的双缓冲,你有两幅画布。你正在积极绘制的那个将在可见的背后。准备好显示结果时,请更换画布的堆叠顺序。