Для этого и используется предложение else
оператора try/except
:
try:
hdf = pd.HDFStore(filepath_hdf)
except:
QMessageBox.warning(self, 'Error', 'Filepath cannot be read')
else:
# do normal stuff here...
Не должно быть необходимости перезапускать все приложение в случае возникновения ошибки, если только ошибка не является действительно фатальной (что означало бы, что буквально невозможно продолжить работу и, следовательно, требовало немедленного выключения). Весь смысл обработки исключений в том, чтобы иметь возможность восстанавливать изящно от нефатальных ошибок.
Нет общего способа вернуть приложение в исходное состояние. Каждое приложение отличается от других, поэтому вам нужно написать собственный метод «reset», который очищает текущее состояние и при необходимости повторно инициализирует определенные элементы графического интерфейса. Этот метод «сброса», скорее всего, будет очень похож на код установки / инициализации, который вы уже используете. Поэтому следует просто провести рефакторинг этого кода в отдельный метод, который будет вызываться при запуске приложения, а затем всякий раз, когда требуется перезагрузка.