From 0f4d8d6d57bbff3428950cf531bc98eae473beec Mon Sep 17 00:00:00 2001 From: SomberNight Date: Wed, 9 Jul 2025 15:32:07 +0000 Subject: [PATCH] follow-up prev: fix weird pyqt bug re QPushButton.clicked When clicking the "close_button" button (labelled "Not Now"), the whole app state got bugged: none of the existing windows (e.g. ElectrumWindow) could get focus anymore. The signature of PushButton.clicked is: `void QAbstractButton::clicked(bool checked = false)` https://doc.qt.io/qt-6/qabstractbutton.html#clicked and pyqt is probably doing some polymorphism, dynamically deciding if the qt slot wants the "checked" arg or not. The extremely weird part is that the bug is triggered on clicking "close_button" (probably pyqt is passing "checked" to self.close) but instead of the current commit, the following diff, touching a completely different button, would also "fix" the issue: ``` diff --git a/electrum/gui/qt/exception_window.py b/electrum/gui/qt/exception_window.py index eceab89de6..e0162e5827 100644 --- a/electrum/gui/qt/exception_window.py +++ b/electrum/gui/qt/exception_window.py @@ -67,7 +67,7 @@ class Exception_Window(BaseCrashReporter, QWidget, MessageBoxMixin, Logger): self._report_contents_dlg = None # type: Optional[ReportContentsDialog] collapse_info = QPushButton(_("Show report contents")) - collapse_info.clicked.connect(self.show_report_contents_dlg) + collapse_info.clicked.connect(lambda: self.show_report_contents_dlg()) main_box.addWidget(collapse_info) ``` No idea why. --- electrum/gui/qt/exception_window.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/electrum/gui/qt/exception_window.py b/electrum/gui/qt/exception_window.py index eceab89de..f166d8078 100644 --- a/electrum/gui/qt/exception_window.py +++ b/electrum/gui/qt/exception_window.py @@ -67,7 +67,7 @@ class Exception_Window(BaseCrashReporter, QWidget, MessageBoxMixin, Logger): self._report_contents_dlg = None # type: Optional[ReportContentsDialog] collapse_info = QPushButton(_("Show report contents")) - collapse_info.clicked.connect(self.show_report_contents_dlg) + collapse_info.clicked.connect(lambda _checked: self.show_report_contents_dlg()) main_box.addWidget(collapse_info) @@ -83,16 +83,16 @@ class Exception_Window(BaseCrashReporter, QWidget, MessageBoxMixin, Logger): buttons = QHBoxLayout() report_button = QPushButton(_('Send Bug Report')) - report_button.clicked.connect(self.send_report) + report_button.clicked.connect(lambda _checked: self.send_report()) report_button.setIcon(read_QIcon("tab_send.png")) buttons.addWidget(report_button) never_button = QPushButton(_('Never')) - never_button.clicked.connect(self.show_never) + never_button.clicked.connect(lambda _checked: self.show_never()) buttons.addWidget(never_button) close_button = QPushButton(_('Not Now')) - close_button.clicked.connect(self.close) + close_button.clicked.connect(lambda _checked: self.close()) buttons.addWidget(close_button) main_box.addLayout(buttons)