class_docstr: Tkinter backend for Canvas abstract class.
  Uses pyopengltk.OpenGLFrame as the internal tk.Frame instance that
  is able to receive OpenGL draw commands and display the results,
  while also being placeable in another Toplevel window.
class_docstr_tok: ["Tkinter","backend","for","Canvas","abstract","class",".","Uses","pyopengltk.OpenGLFrame","as","the","internal","tk.Frame","instance","that","is","able","to","receive","OpenGL","draw","commands","and","display","the","results",",","while","also","being","placeable","in","another","Toplevel","window","."]
docstr: Expose a new frame to the canvas. This will call self.redraw() internally.
  
  The self.animate sets the refresh rate in milliseconds. Using this is not
  necessary because VisPy will use the TimerBackend to periodically call
  self._vispy_update, resulting in the exact same behaviour.
  So we set it to `0` to tell OpenGLFrame not to redraw itself on its own.
code: def _delayed_update(self):
      """
      Expose a new frame to the canvas. This will call self.redraw() internally.
  
      The self.animate sets the refresh rate in milliseconds. Using this is not
      necessary because VisPy will use the TimerBackend to periodically call
      self._vispy_update, resulting in the exact same behaviour.
      So we set it to `0` to tell OpenGLFrame not to redraw itself on its own.
      """
      if self.is_destroyed:
          return
      self.animate = 0
      self.tkExpose(None)
  
imports: from __future__ import division
  from time import sleep
  import warnings
  from ..base import BaseApplicationBackend, BaseCanvasBackend, BaseTimerBackend
  from ...util import keys
  from ...util.ptime import time
  from ...gloo import gl
label_desc: Use image node_id 4 for calling the CanvasBackend obj's underlying member method code with example usage: obj._delayed_update() without return types