Как мне создать новый сигнал в pygtk
Вопрос
Я создал объект 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')
Не связан с StackOverflow