class_docstr: Template backend
  
  Events to emit are shown below. Most backends will probably
  have one method for each event:
  
      self._vispy_canvas.events.initialize()
      self._vispy_canvas.events.resize(size=(w, h))
      self._vispy_canvas.events.draw(region=None)
      self._vispy_canvas.close()
      self._vispy_canvas.events.mouse_press(pos=(x, y), button=1,
                                            modifiers=())
      self._vispy_canvas.events.mouse_release(pos=(x, y), button=1,
                                              modifiers=())
      self._vispy_canvas.events.mouse_double_click(pos=(x, y), button=1,
                                                   modifiers=())
      self._vispy_canvas.events.mouse_move(pos=(x, y), modifiers=())
      self._vispy_canvas.events.mouse_wheel(pos=(x, y), delta=(0, 0),
                                            modifiers=())
      self._vispy_canvas.events.key_press(key=key, text=text, modifiers=())
      self._vispy_canvas.events.key_release(key=key, text=text, modifiers=())
  
  In most cases, if the window-cross is clicked, a native close-event is
  generated, which should then call canvas.close(). The Canvas class is
  responsible for firing the close event and calling
  backend_canvas._vispy_close, which closes the native widget.
  If this happens to result in a second close event, canvas.close() gets
  called again, but Canvas knows it is closing so it stops there.
  
  If canvas.close() is called (by the user), it calls
  backend_canvas._vispy_close, which closes the native widget,
  and we get the same stream of actions as above. This deviation from
  having events come from the CanvasBackend is necessitated by how
  different backends handle close events, and the various ways such
  events can be triggered.
class_docstr_tok: ["Template","backend","Events","to","emit","are","shown","below",".","Most","backends","will","probably","have","one","method","for","each","event",":","self._vispy_canvas.events.initialize","(",")","self._vispy_canvas.events.resize","(","size=","(","w",",","h",")",")","self._vispy_canvas.events.draw","(","region=None",")","self._vispy_canvas.close","(",")","self._vispy_canvas.events.mouse_press","(","pos=","(","x",",","y",")",",","button=1",",","modifiers=","(",")",")","self._vispy_canvas.events.mouse_release","(","pos=","(","x",",","y",")",",","button=1",",","modifiers=","(",")",")","self._vispy_canvas.events.mouse_double_click","(","pos=","(","x",",","y",")",",","button=1",",","modifiers=","(",")",")","self._vispy_canvas.events.mouse_move","(","pos=","(","x",",","y",")",",","modifiers=","(",")",")","self._vispy_canvas.events.mouse_wheel","(","pos=","(","x",",","y",")",",","delta=","(","0",",","0",")",",","modifiers=","(",")",")","self._vispy_canvas.events.key_press","(","key=key",",","text=text",",","modifiers=","(",")",")","self._vispy_canvas.events.key_release","(","key=key",",","text=text",",","modifiers=","(",")",")","In","most","cases",",","if","the","window-cross","is","clicked",",","a","native","close-event","is","generated",",","which","should","then","call","canvas.close","(",")",".","The","Canvas","class","is","responsible","for","firing","the","close","event","and","calling","backend_canvas._vispy_close",",","which","closes","the","native","widget",".","If","this","happens","to","result","in","a","second","close","event",",","canvas.close","(",")","gets","called","again",",","but","Canvas","knows","it","is","closing","so","it","stops","there",".","If","canvas.close","(",")","is","called","(","by","the","user",")",",","it","calls","backend_canvas._vispy_close",",","which","closes","the","native","widget",",","and","we","get","the","same","stream","of","actions","as","above",".","This","deviation","from","having","events","come","from","the","CanvasBackend","is","necessitated","by","how","different","backends","handle","close","events",",","and","the","various","ways","such","events","can","be","triggered","."]
code: def _vispy_set_size(self, w, h):
      # Set size of the widget or window
      raise NotImplementedError()
  
imports: from __future__ import division
  from ..base import BaseApplicationBackend, BaseCanvasBackend, BaseTimerBackend
  from ...util import keys
  from ...None import config
label_desc: Use image node_id 5 for calling the CanvasBackend obj's underlying member method code with example usage: obj._vispy_set_size(w, h) without return types