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.
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user