pyside - есть ли способ получить информацию журнала для каждого события в цикле событий?

Я разрабатываю приложение с PySide, и мне было интересно, есть ли способ записи, какие события входят в основной цикл событий, а какие уходят. мое приложение не использует никаких потоков, оно полностью асинхронно, но я хотел, чтобы в целях отладки я использовал журналы регистрации цикла событий. я использую logging как мой лесозаготовительный объект (дух).

Pax et bonum.

1 ответ

Решение

Как хороший пользователь на Reddit отвечает:

Проверьте это: http://qt-project.org/doc/qt-4.8/qcoreapplication.html. Цикл событий реализован в QCoreApplication, поэтому вы можете создавать подклассы и устанавливать свой собственный код для проверки событий.

Приложение класса (QApplication): события = {константа: имя для имени, константа в QEvent.dict.items () if name [0].isupper () и isinstance(константа, int)}

def notify(self, obj, event):
    print("{:<20}{}".format(Application.events[event.type()], obj))
    return super().notify(obj, event)

Работает довольно хорошо. http://i.imgur.com/mMLqQ5Y.png

Конечно, вам все равно придется выяснить, какие события потребляются. Этот супер звонок возвращается True или же False, но почти каждое событие, которое я видел, возвращалось True, Возможно, вам придется пересмотреть объектные отношения или что-то в этом роде - я не уверен, потому что я этого не сделал, но, похоже, есть неплохая поддержка для того, чтобы войти в этот цикл и делать то, что вам нравится.


Однако я более склонен следовать третьему варианту, указанному в документации Qt:

3. Установка фильтра событий на QCoreApplication::instance(), Такой фильтр событий способен обрабатывать все события для всех виджетов, поэтому он так же силен, как и переопределение notify(); кроме того, возможно иметь более одного глобального фильтра событий приложения. Глобальные фильтры событий даже видят события мыши для отключенных виджетов. Обратите внимание, что фильтры событий приложения вызываются только для объектов, которые живут в основном потоке.

Другие вопросы по тегам