我将回调处理程序on_fader_finished
连接到我的GObject
推子:
fader.connect("animation-finished", self.on_fader_finished)
现在,我希望回调处理程序在被调用后断开连接。
def on_fader_finished(self, fader):
fader.disconnect(???)
不幸的是,disconnect
函数需要将处理程序id作为参数传递。
当然,我可以尝试在连接回调处理程序时以某种方式保存处理程序id,然后检索它,但在我的例子中,这是相当复杂的,因为同一个处理程序函数可能动态地连接到多个GObjects。
如果回调可以简单地断开自身与GObject的连接,就会容易得多。因为我的GObjects通常只有一个回调处理程序,所以断开所有处理程序也是一个很好的解决方案。
这个是可能的吗?
发布于 2020-04-26 18:17:01
您应该能够使用GObject.signal_handlers_disconnect_by_func()
。类似于:
fader.signal_handlers_disconnect_by_func(self.on_fader_finished)
https://stackoverflow.com/questions/61440855
复制