如何在PyGObject中为信号设置累加器?

时间:2017-06-23 20:44:06

标签: python python-3.x gtk pygobject

我有一个继承自GObject的类。当我从任何回调中收到非None结果时,我需要发出一个信号并停止。

像这样......

    class A(GObject.Object):
     __gsignals__ = {'get_my_object':(GObject.SIGNAL_RUN_LAST, subClassGObject, (int,))}

     def get_the_object(self):
      my_obj = self.emit('get_my_object')

在返回应该存储在my_obj中的第一个非None结果的回调中,我不知道这是否与某种“累加器”函数有关。如何在pygtk中完成此操作?

1 个答案:

答案 0 :(得分:1)

如果您使用@GObject.Signal装饰器,则可以将accumulator参数传递给它。文档在这里:https://github.com/GNOME/pygobject/blob/b2529624b3925adbef2671025e08cbf747f162e8/gi/_signalhelper.py#L49

@GObject.Signal(accumulator=GObject.signal_accumulator_first_wins)
def my_signal(self):
    return None