Graphics.py:如何清除窗口?

时间:2017-08-05 02:38:54

标签: python zelle-graphics

我有一个窗口,我正在渲染图像。每个帧的位置都会改变,所以问题是(显然)它不会从最后一帧消失。我想每帧清除窗口。我无法在任何地方找到任何明确的窗口对象(GraphWin)方法。而且我不能使用undraw()因为那时我必须为屏幕上的所有内容做这件事。

1 个答案:

答案 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?