Проблема с объектно-ориентированным QSignalMapper

Я пытаюсь настроить расположение слотов сигналов в PyQt, где сигнал передает много информации. Я хочу использовать QObject в качестве носителя, устанавливая различную информацию, которую я хочу передать в качестве атрибутов QObject, В теории это должно работать - есть QSignalMapper.setMapping() перегрузка, которая принимает отправителя и QObject в качестве аргументов.

Вот сокращенный код:

self.mapper = QtCore.QSignalMapper()
self.timeline.finished.connect(self.mapper.map)
carrier = QtCore.QObject()
carrier.contents = (item1, item2)
self.mapper.setMapping(self.timeline, carrier)
self.portalMapper.mapped.connect(self.report)

def report(self, carrierObject):
    print 'Triggered'

К сожалению, это не работает. Я проследил проблему до setMapping функция по процессу устранения.

Эта же схема будет работать нормально, если я выключу QObject с int, Это также не имеет ничего общего с атрибутами, которые я добавил в QObject - используя свежий из коробки QObject вызывает ту же проблему.

Кажется, что здесь что-то происходит с этой конкретной перегрузкой setMapping функция. Любые идеи о том, что проблема здесь?

1 ответ

Решение

Благодаря предложению @ekhumoro полностью пропустить подход QSignalMapper и просто создать собственный сигнал. Работал как шарм.

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