'update drawing area only if idle'

def draw_idle(self):

    if (self._idle is False):
        return
    self._idle = False
    def idle_draw(*args):
        try:
            self.draw()
        finally:
            self._idle = True
    self._idle_callback = self._tkcanvas.after_idle(idle_draw)
