diff --git a/electrum/gui/kivy/main_window.py b/electrum/gui/kivy/main_window.py index 33232d109..026f8717e 100644 --- a/electrum/gui/kivy/main_window.py +++ b/electrum/gui/kivy/main_window.py @@ -444,7 +444,7 @@ class ElectrumWindow(App, Logger): self.show_error("invoice error:" + pr.error) self.send_screen.do_clear() - def on_qr(self, data): + def on_qr(self, data: str): from electrum.bitcoin import is_address data = data.strip() if is_address(data): @@ -548,7 +548,8 @@ class ElectrumWindow(App, Logger): try: video_dev = self.electrum_config.get_video_device() data = qrscanner.scan_barcode(video_dev) - on_complete(data) + if data is not None: + on_complete(data) except UserFacingException as e: self.show_error(e) except BaseException as e: diff --git a/electrum/qrscanner.py b/electrum/qrscanner.py index 211e06438..081800078 100644 --- a/electrum/qrscanner.py +++ b/electrum/qrscanner.py @@ -26,6 +26,7 @@ import os import sys import ctypes +from typing import Optional from .util import UserFacingException from .i18n import _ @@ -53,7 +54,7 @@ except BaseException as e1: _logger.error(f"failed to load zbar. exceptions: {[e1,e2]!r}") -def scan_barcode_ctypes(device='', timeout=-1, display=True, threaded=False): +def scan_barcode_ctypes(device='', timeout=-1, display=True, threaded=False) -> Optional[str]: if libzbar is None: raise UserFacingException("Cannot start QR scanner: zbar not available.") libzbar.zbar_symbol_get_data.restype = ctypes.c_char_p