code: def update_widgets(self, new_frame=None):
          
          for column in self._columns:
              for widget in column:
                  # First handle the normal case - pull the default data from the current frame.
                  if widget.name in self._frame.data:
                      widget.value = self._frame.data[widget.name]
                  elif widget.is_tab_stop:
                      # Make sure every active widget is properly initialised, by calling the setter.
                      # This will fix up any dodgy NoneType values, but preserve any values overridden
                      # by other code.
                      widget.value = widget.value
  
                  # If an old frame was present, give the widget a chance to clone internal state
                  # from the previous view.  If there is no clone function, ignore the error.
                  if new_frame:
                      try:
                          widget.clone(new_frame.find_widget(widget.name))
                      except AttributeError:
                          pass
docs: Reset the values for any Widgets in this Layout based on the current Frame data store.
  
          :param new_frame: optional old Frame - used when cloning scenes.