Вопрос

Я создал объект Python, но хочу отправлять на него сигналы.Я унаследовал его от gobject.GObject, но, похоже, нет никакого способа создать новый сигнал для моего объекта.

Это было полезно?

Решение

Вы также можете определить сигналы внутри определения класса:

class MyGObjectClass(gobject.GObject):
    __gsignals__ = {
      "some-signal": (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, (object, )),
    }

Содержимое кортежа такое же, как и три последних аргумента gobject.signal_new.

Другие советы

Вот как:

import gobject

class MyGObjectClass(gobject.GObject):
    ...

gobject.signal_new("signal-name", MyGObjectClass, gobject.SIGNAL_RUN_FIRST,
    None, (str, int))

Где предпоследний аргумент — это тип возвращаемого значения, а последний аргумент — это кортеж типов аргументов.

Если вы используете киви в наличии здесь вы можете просто сделать:

from kiwi.utils import gsignal

class MyObject(gobject.GObject):
    gsignal('signal-name')
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top