Search code examples
pythonpython-2.7vpython

VPython 6 - Object won't delete


I have a 3D elastic collision simulation. I'd like to clear all of the sphere objects from my program from a button press. The documentation indicates that I should do the following:

def clear_balls():
   for ball in balls:
      ball.visible = False
      del ball

This successfully makes the balls invisible in the scene, but they still take up memory and collide with balls that still exist. I want it completely removed. Trying this with a unique ball name this isn't part of a list as some have suggested still results in the same issue.


Solution

  • del ball is not doing what you think because balls still holds a reference to the object. You need to empty the balls list:

    def clear_balls():
        for ball in balls:
            ball.visible = False
         balls[:] = []