pygtk中connect()和connect_object()的区别

3 投票
1 回答
1559 浏览
提问于 2025-04-17 10:16

我在使用pygtk。想问一下,connect()和connect_object()这两个有什么区别?能不能给我解释一下?

谢谢。

1 个回答

4

正如这里所解释的,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并不常用。

补充说明:此外,你可以在这里找到以下解释:

connect_object()允许PyGTK的控件方法只接受一个参数(self)作为信号处理器。

撰写回答