我有一个窗口,我正在渲染图像。每个帧的位置都会改变,所以问题是(显然)它不会从最后一帧消失。我想每帧清除窗口。我无法在任何地方找到任何明确的窗口对象(GraphWin)方法。而且我不能使用undraw()因为那时我必须为屏幕上的所有内容做这件事。
答案 0 :(得分:2)
首先要考虑的是,如果您只是在帧之间移动图形对象,则调用它们的move()
方法而不是擦除和重绘它们。如果您必须清除屏幕,我建议:
在下降到Tkinter级别之前,我会考虑使用Zelle Graphics自己的基础。原因是Zelle Graphics保留了它自己的对象并行记录,如果你从Tkinter级别删除它们,你可能会使两者不同步。这是我的建议:
def clear(win):
for item in win.items[:]:
item.undraw()
win.update()
但是,未绘制的项目很慢,可能比您想要的帧速率慢。所以,你要关闭自动冲洗:
win = GraphWin(..., autoflush=False)
然后致电:
update()
每当你有东西呈现给你的用户时 - 这将加速图形,因为它不会显示所有的中间步骤。
然而,上述建议 不适用于使用win.plot()
方法绘制的内容。绘图是在比其他Zelle图形更低的级别实现的,因此您需要下拉到Tkinter以清除绘图。有关示例,请参阅How to undraw plot with Zelle graphics?
。