code: def configure(self, cnf=None, **kw):
          
          if cnf == 'drag_cols':
              return 'drag_cols', self._drag_cols
          elif cnf == 'drag_rows':
              return 'drag_rows', self._drag_rows
          elif cnf == 'sortable':
              return 'sortable', self._sortable
  
          if isinstance(cnf, dict):
              kwargs = cnf.copy()
              kwargs.update(kw)  # keyword arguments override cnf content
              cnf = {}   # everything is in kwargs so no need of cnf
              cnf2 = {}  # to configure the preview
          else:
              kwargs = kw
              cnf2 = cnf
  
          sortable = bool(kwargs.pop("sortable", self._sortable))
          if sortable != self._sortable:
              self._config_sortable(sortable)
          drag_cols = bool(kwargs.pop("drag_cols", self._drag_cols))
          if drag_cols != self._drag_cols:
              self._config_drag_cols(drag_cols)
          self._drag_rows = bool(kwargs.pop("drag_rows", self._drag_rows))
          if 'columns' in kwargs:
              # update column type dict
              for col in list(self._column_types.keys()):
                  if col not in kwargs['columns']:
                      del self._column_types[col]
              for col in kwargs['columns']:
                  if col not in self._column_types:
                      self._column_types[col] = str
          # Remove some keywords from the preview configuration dict
          kw2 = kwargs.copy()
          kw2.pop('displaycolumns', None)
          kw2.pop('xscrollcommand', None)
          kw2.pop('yscrollcommand', None)
          self._visual_drag.configure(cnf2, **kw2)
          if len(kwargs) != 0:
              return ttk.Treeview.configure(self, cnf, **kwargs)
docs: Configure resources of the widget.
  
          To get the list of options for this widget, call the method :meth:`~Table.keys`.
          See :meth:`~Table.__init__` for a description of the widget specific option.