<p>嗯,我想出来了。谢谢你的回复。我试图覆盖<br/>
<code>____gsignals___</code>
<br/>
我的属性Gst.管道对象。每次我试图创建对象时,它总是被重置为“{}”。我最终为信号创建了一个单独的类。你知道吗</p>
<pre><code>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)
</code></pre>
<p>创建Pipeline对象时,我会创建signals对象:</p>
<pre><code> self.pipesignals = PipeSignals()
</code></pre>
<p>我连接到其中一个:</p>
<pre><code> self.pipeline.pipesignals.connect('updatedSourceFPS', self.on_fps_update)
</code></pre>
<p>并在时机成熟时发出信号:</p>
<pre><code> self.pipesignals.emit('updatedSourceFPS', fps)
</code></pre>
<p>我更新了我在\u fps \u update()上的状态栏。你知道吗</p>
<pre><code> def on_fps_update(self, signal, fps):
self.statusbar.pop(self.statusid)
self.statusbar.push(self.statusid, 'fps: {:.3f}'.format(fps))
return
</code></pre>