class_docstr: Connection to a Canvas widget.
class_docstr_tok: ["Connection","to","a","Canvas","widget","."]
code: def process(self, In, display=True):
      if display:
          items = set()
          for name, vals in In.items():
              if vals is None:
                  continue
              if type(vals) is not list:
                  vals = [vals]
  
              for val in vals:
                  vid = id(val)
                  if vid in self.items:
                      items.add(vid)
                  else:
                      self.canvas.addItem(val)
                      item = val
                      self.items[vid] = item
                      items.add(vid)
          for vid in list(self.items.keys()):
              if vid not in items:
                  # print "remove", self.items[vid]
                  self.canvas.removeItem(self.items[vid])
                  del self.items[vid]
  
imports: import numpy
  from ...None import ComboBox, PlotDataItem
  from ...graphicsItems.ScatterPlotItem import ScatterPlotItem
  from ...Qt import QtCore, QtGui, QtWidgets
  from ..Node import Node
  from .common import CtrlNode
label_desc: Use image node_id 5 for calling the CanvasNode obj's underlying member method code with example usage: obj.process(In, display) without return types