Разница между connect () и connect_object () в pygtk - PullRequest
3 голосов
/ 15 января 2012

Я использую pygtk. Я не понимаю, в чем разница между connect () и connect_object () в pygtk. Может кто-нибудь прояснить мне это?

Спасибо.

1 Ответ

4 голосов
/ 15 января 2012

Как объяснено здесь , connect_object используется для замены объекта, переданного методу обратного вызова по умолчанию (который является источником сигнала).

Например,

>>> label = gtk.Label()
>>> button = gtk.Button()
>>> def callback(obj):
...    print obj
>>> button.connect('clicked', callback)  # button will be passed by default
>>> button.emit('clicked')
<gtk.Button object at 0x27cd870 (GtkButton at 0x22c6190)>
>>> button.disconnect_by_func(callback)
>>> button.connect_object('clicked', callback, label)  # label will be passed instead of button
>>> button.emit('clicked')
<gtk.Label object at 0x27cd9b0 (GtkLabel at 0x22b64f0)>

Примечание. Обычно в методах обратного вызова вам будет интересен объект, излучающий сигнал (передаваемый по умолчанию), поэтому connect_object используется не часто.

Edit: В дополнение к этому вы найдете здесь следующее объяснение:

connect_object() позволяет методам виджетов PyGTK, которые принимают только один аргумент (self) дляиспользоваться в качестве обработчиков сигналов.

...