GObject отключить обработчик - PullRequest
0 голосов
/ 26 апреля 2020

Я подключаю обработчик обратного вызова on_fader_finished к своему GObject фейдеру:

fader.connect("animation-finished", self.on_fader_finished)

Теперь я хочу, чтобы обработчик обратного вызова отключился после вызова.

def on_fader_finished(self, fader):
    fader.disconnect(???)

К сожалению, функциям disconnect требуется, чтобы идентификатор обработчика передавался в качестве аргумента.

Конечно, я мог бы попытаться как-то сохранить идентификатор обработчика при подключении обработчика обратного вызова, а затем получить его, но это довольно сложно в моем случае, потому что одна и та же функция-обработчик может динамически подключаться к нескольким объектам GObject.

Было бы намного проще, если бы обратный вызов мог просто отключиться от объекта GObject. Поскольку мои объекты GObject обычно имеют только один обработчик обратного вызова, отключение всех также будет хорошим решением.

Возможно ли это?

1 Ответ

0 голосов
/ 26 апреля 2020

Вы должны быть в состоянии использовать GObject.signal_handlers_disconnect_by_func(). Что-то вроде:

fader.signal_handlers_disconnect_by_func(self.on_fader_finished)
...