Как отловить потерю фокуса Qwidget'а (PyQt5)?
Как отловить потерю фокуса Qwidget'а (PyQt5).
Необходимо закрыть приложение при потере им фокуса.
Ответы (1 шт):
Автор решения: S. Nick
→ Ссылка
void QApplication::focusChanged(QWidget *old, QWidget *now)
Этот сигнал испускается, когда виджет, который имеет фокус клавиатуры,
изменился со старого на настоящий, т.е. когда пользователь нажал клавишу табуляции,
щелкнул виджет или изменил активное окно.
И старое, и настоящее могут быть nullptr.
import sys
from PyQt5.Qt import *
class MyGui(QWidget):
def __init__(self):
super().__init__()
self.setFocus()
app.focusChanged.connect(self.onFocusChanged)
def onFocusChanged(self):
print(f' Окно активное (сфокусировано ли окно или нет) ? -> `{self.isActiveWindow()}`')
if not self.isActiveWindow():
self.close()
if __name__ == "__main__":
app = QApplication(sys.argv)
gui = MyGui()
gui.show()
sys.exit(app.exec_())
