InterVi
@InterVi
Fullstack Developer

PyQt5 — mouseMoveEvent не всегда работает (eventFilter вообще не работает), как же отслеживать мышь?

Задача - отслеживать мышь у множества QWidget-ов (вешается декоратор на mouseMoveEvent и делает свои дела). Проблема в том, что ивент срабатывает только над голой формой. А есть такие виджеты, где какой-то элемент занимает всю форму, поэтому ивент не работает вообще. Насколько я понял, единственный вариант - ловить eventFilter. Но он не работает совсем. Так каким способом ловить мышь? Что я делаю не так? Вот пример с eventFilter, который не работает:
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5.QtCore import QObject


class SomeFilter(QObject):
    def eventFilter(self, obj, ev):
        print("Event filtering ok")
        return False


class MainWidget(QMainWindow):
    def __init__(self):
        QMainWindow.__init__(self)
        self.installEventFilter(SomeFilter())


app = QApplication(sys.argv)
w = MainWidget()
w.show()
sys.exit(app.exec_())

То, что тут MainWidget, не принципиально. Пробовал вешать на QWidget, на элементы внутри QWidget - всё бесполезно.
  • Вопрос задан
  • 1919 просмотров
Решения вопроса 1
InterVi
@InterVi Автор вопроса
Fullstack Developer
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы