Проблема с объектно-ориентированным 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 и просто создать собственный сигнал. Работал как шарм.