docs: def update_status(self, progress):
          """
          waits for a signal emitted from a thread and updates the gui
          Args:
              progress:
          Returns:
  
          """
  
          # interval at which the gui will be updated, if requests come in faster than they will be ignored
          update_interval = 0.2
  
          now = datetime.datetime.now()
  
          if not self._last_progress_update is None and now-self._last_progress_update < datetime.timedelta(seconds=update_interval):
              return
  
          self._last_progress_update = now
  
          self.progressBar.setValue(progress)
  
          script = self.current_script
  
          # Estimate remaining time if progress has been made
          if progress:
              remaining_time = str(datetime.timedelta(seconds=script.remaining_time.seconds))
              self.lbl_time_estimate.setText('time remaining: {:s}'.format(remaining_time))
          if script is not str(self.tabWidget.tabText(self.tabWidget.currentIndex())).lower() in ['scripts', 'instruments']:
              self.plot_script(script)