問題は、カスタム信号の署名を作成する方法にあります。あなたがそれをすることを許されるいくつかの方法があります、しかしあなたが今それを持っている方法はそれらの1つではありません。
接続を定義するとき、それを行う方法によってエラーが発生するはずです。
# not a valid type of signature
QtCore.SIGNAL( 'dagEvent(type, *args)' )
そして、それが作成されることを許可されたとしても、後で発行するときは、とにかく同じ署名を参照していません。
# if it were even allowed, would have to be: dagEvent(type, *args)
self.emit(QtCore.SIGNAL('dagEvent()'), type, *args)
PyQtからカスタムシグナルを作成する最も簡単な方法は、呼び出し可能な名前のみを使用することです。
self.connect(self, QtCore.SIGNAL('dagEvent'), self.OnDagEvent)
...
# "type" is a builtin. I renamed it to type_
self.emit(QtCore.SIGNAL('dagEvent'), type_, *args)
このアプローチでは、渡すことにした引数は関係ありません。あなたはあなたが望むものは何でも渡すことができます。
シグニチャを具体的に制御する場合は、組み込みタイプを定義できます。
self.connect(self, QtCore.SIGNAL('dagEvent(int,str,int)'), self.OnDagEvent)
...
self.emit(QtCore.SIGNAL('dagEvent(int,str,int)'), i1, s2, i3)
放出で正しい署名を使用しなかった場合、それは呼び出されず、放出時に間違ったタイプを渡すとエラーが発生します。
ここで、署名をある程度定義したいが、それを基本タイプに限定せず、Pythonオブジェクトを許可したい場合は、次のようにすることができます。
self.connect(self, QtCore.SIGNAL('dagEvent(PyQt_PyObject)'), self.OnDagEvent)
...
self.emit(QtCore.SIGNAL('dagEvent(PyQt_PyObject)'), foo)
これにより、任意の1つのPythonオブジェクトを渡すことができますが、具体的には1つの引数が必要であると述べています。