2012-01-15 1 views
3

私はpygtkを使用しています。私はpygtkのconnect()とconnect_object()の違いは何も分かりません。誰かがこれについて私を明確にすることはできますか?pygtkのconnect()とconnect_object()の違い

ありがとうございました。

答えて

4

説明したように、here,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のウィジェットのメソッドを許可します。これに加えて、あなたはhere以下の説明を見つけることができます。

+0

私は、connect_object()を使ってシグナルハンドラとして使用するPyGTKウィジェットのメソッドが単一の引数(self)だけを取る方法を教えていただけますか? – nik7

+2

申し訳ありませんが、前の例は 'button.connect_object( 'clicked'、gtk.Label.show、label)'のようになります。 – jcollado

+0

、ありがとう、たくさん – nik7