【问题标题】:what is the equivalent of pyqtsignal in PyGObject?PyGObject 中 pyqtsignal 的等价物是什么?
【发布时间】:2015-07-15 01:06:30
【问题描述】:

我有一些 python 代码正在尝试从 Qt 转换为 Gtk。我对 Gtk 还很陌生,对 Qt 没有经验。 python中有一些行在Qt中创建了我想转换为Gtk的新信号。代码是这样的:

fpssig = pyqtsignal(float)

稍后,有一个连接到回调函数。抱歉,我这里没有可用的具体代码。

如何在 PyGtk 中创建类似的信号,以便在需要时发出它?

谢谢。

【问题讨论】:

标签: python pyqt gtk pygobject


【解决方案1】:

如果您的意思是 pygobject 或 pygtk,您的标签不是很清楚。

如果您指的是 pygobject,请参阅:https://python-gtk-3-tutorial.readthedocs.org/en/latest/objects.html#signals

【讨论】:

  • 我的意思是 pygobject。当我在谷歌上四处寻找答案并且一些命中是指 pygobject 和 Gtk3 而其他命中是指 Gtk2 时,这会让刚接触这个的人感到困惑。通过更仔细地查看您发送的链接,我终于发现了如何创建信号。我曾尝试设置 gsignals 属性,但在创建对象之后。
  • 一旦我最终为我的信号创建了一个单独的对象(例如类 PipeSignals(GObject.GObject))并创建了一个实例,我可以发出我的信号并将其连接到回调。跨度>
【解决方案2】:

好吧,我想通了。感谢您的回复。我曾试图覆盖
____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)

当我创建我的管道对象时,我创建了信号对象:

        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

【讨论】:

    猜你喜欢
    • 2014-05-08
    • 2014-06-12
    • 1970-01-01
    • 2022-11-28
    • 1970-01-01
    • 2021-06-19
    • 2012-07-20
    • 2023-03-30
    • 2011-04-08
    相关资源
    最近更新 更多