J'ai des problèmes pour utiliser correctement les signaux de mon programme PySide python Qt. Je veux émettre un signal qui prend un seul argument d'un type python personnalisé. Le documentation ditComment émettre un signal PySide avec un argument de type python personnalisé?
Signals can be defined using the QtCore.signal() class. Python types and C types can be passed as parameters to it.
J'ai donc essayé les éléments suivants:
from PySide import QtCore
from PySide.QtCore import QObject
class Foo:
pass
class Bar(QObject):
sig = QtCore.Signal(Foo)
def baz(self):
foo = Foo()
self.sig.emit(foo)
bar = Bar()
bar.baz()
Mais l'erreur suivante:
Traceback (most recent call last):
File "test.py", line 15, in <module>
bar.baz()
File "test.py", line 12, in baz
self.sig.emit(foo)
TypeError: sig() only accepts 0 arguments, 1 given!
Si, au contraire, je tire la classe Foo de QObject, le programme court sans erreur. Mais ne devrais-je pas être en mesure de transmettre mon type personnalisé en tant qu'argument au signal, même si ce type ne dérive pas de QObject?
est avec python 2.7.2 et PySide 1.0.4 sur Windows 7.