Ну, я понял это. Спасибо за ответы. Я пытался переопределить
____gsignals___
атрибут в моем объекте Gst.Pipeline. Каждый раз, когда я пытался создать объект, он всегда возвращался к «{}». Я, наконец, создал отдельный класс только для сигналов.
class PipeSignals(GObject.Object):
# create signals for this pipeline
__gsignals__ = {
'updatedSourceFPS': (GObject.SIGNAL_RUN_LAST, GObject.TYPE_NONE, (GObject.TYPE_FLOAT,)),
'updatedCaptureCount': (GObject.SIGNAL_RUN_LAST, GObject.TYPE_NONE, (GObject.TYPE_INT,)),
'updatedCaptureTime':(GObject.SIGNAL_RUN_LAST, GObject.TYPE_NONE, (GObject.TYPE_FLOAT,)),
'captureFinished': (GObject.SIGNAL_RUN_LAST, GObject.TYPE_NONE,()),
'pipelineError': (GObject.SIGNAL_RUN_LAST, GObject.TYPE_NONE, (GObject.TYPE_STRING,))
}
def __init__(self):
GObject.Object.__init__(self)
Когда я создаю свой объект Pipeline, я создаю объект сигналы:
self.pipesignals = PipeSignals()
подключить к одному из них:
self.pipeline.pipesignals.connect('updatedSourceFPS', self.on_fps_update)
и излучают сигнал, когда придет время :
self.pipesignals.emit('updatedSourceFPS', fps)
И я обновляю моя строка состояния в on_fps_update().
def on_fps_update(self, signal, fps):
self.statusbar.pop(self.statusid)
self.statusbar.push(self.statusid, 'fps: {:.3f}'.format(fps))
return
[Сигналы и события в PyGTK] (http://zetcode.com/gui/pygtk/signals/) – ekhumoro