diff --git a/pytec/tec_qt.py b/pytec/tec_qt.py index 9af0a87..24abf7a 100644 --- a/pytec/tec_qt.py +++ b/pytec/tec_qt.py @@ -557,8 +557,7 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): @asyncClose async def closeEvent(self, event): - await self._on_connection_changed(False) - await self.client.disconnect() + await self.bail() @asyncSlot() async def on_connect_btn_clicked(self): @@ -576,13 +575,15 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): return await self._on_connection_changed(True) else: - await self._on_connection_changed(False) - await self.client.disconnect() + await self.bail() except (OSError, TimeoutError, asyncio.TimeoutError) as e: # TODO: Remove asyncio.TimeoutError in Python 3.11 logging.error(f"Failed communicating to {host}:{port}: {e}") - await self._on_connection_changed(False) - await self.client.disconnect() + await self.bail() + + async def bail(self): + await self._on_connection_changed(False) + await self.client.disconnect() @pyqtSlot(list) def plot(self, report):