Как добавить пользовательское событие в цикл событий PyQt5

#python #user-interface #event-handling #pyqt5 #pyside

#python #пользовательский интерфейс #обработка событий #pyqt5 #pyside

Вопрос:

Я пытаюсь добавить событие, которое срабатывает, когда окно неактивно (- когда пользовательская мышь щелкнула по другому приложению или рабочему столу). Прочитав много официальной документации, я все еще теряюсь. Я также надеюсь сделать это с помощью других действий, но это будет первый шаг.

Ответ №1:

Вы должны использовать activeChanged сигнал, который выдается каждый раз, когда QWindow изменяет состояние, и isActive() который указывает, активен он или нет:

 import sys

from PyQt5 import QtWidgets


app = QtWidgets.QApplication(sys.argv)

w = QtWidgets.QWidget()
w.show()

qwindow = w.windowHandle()

if qwindow is not None:

    def handle_activeChanged():
        print("isActive? {}".format(qwindow.isActive()))

    qwindow.activeChanged.connect(handle_activeChanged)

sys.exit(app.exec_())