diff --git a/gui/qt/main_window.py b/gui/qt/main_window.py index 055b4b08..f8b5336c 100644 --- a/gui/qt/main_window.py +++ b/gui/qt/main_window.py @@ -1021,13 +1021,15 @@ class ElectrumWindow(QMainWindow): # sign the tx def sign_thread(): - time.sleep(0.1) keypairs = {} - self.wallet.add_keypairs(tx, keypairs, password) - self.wallet.sign_transaction(tx, keypairs, password) - return tx, fee, label + try: + self.wallet.add_keypairs(tx, keypairs, password) + self.wallet.sign_transaction(tx, keypairs, password) + except Exception as e: + tx.error = str(e) + return tx - def sign_done(tx, fee, label): + def sign_done(tx): if tx.error: self.show_message(tx.error) self.send_button.setDisabled(False) @@ -1047,6 +1049,7 @@ class ElectrumWindow(QMainWindow): self.broadcast_transaction(tx) + # keep a reference to WaitingDialog or the gui might crash self.waiting_dialog = WaitingDialog(self, 'Signing..', sign_thread, sign_done) self.waiting_dialog.start() diff --git a/gui/qt/util.py b/gui/qt/util.py index 94a08982..6d838713 100644 --- a/gui/qt/util.py +++ b/gui/qt/util.py @@ -37,7 +37,10 @@ class WaitingDialog(QThread): return if self.on_complete: - self.on_complete(*self.result) + if type(self.result) is tuple: + self.on_complete(*self.result) + else: + self.on_complete(self.result)