docs: def delete_widget(self, index):
          """
          Delete widgets by index.
  
          The widgets are saved to KE-chain.
  
          :param index: The index of the widget to be deleted in the self.widgets
          :type index: int
          :raises ValueError: if the customization has no widgets
          """
          widgets = self.widgets()
          if len(widgets) == 0:
              raise ValueError("This customization has no widgets")
          widgets.pop(index)
          self._save_customization(widgets)