docs: def add_column(self, func, name=None, show=True):
          """Add a column function which takes an id as argument and
          returns a value."""
          assert func
          name = name or func.__name__
          if name == '<lambda>':
              raise ValueError("Please provide a valid name for " + name)
          d = {'func': func,
               'show': show,
               }
          self._columns[name] = d
  
          # Update the headers in the widget.
          data = _create_json_dict(cols=self.column_names,
                                   )
          self.eval_js('table.setHeaders({});'.format(data))
  
          return func