4

PySide python Qt プログラムでシグナルを正しく使用できません。カスタムの python 型の引数を 1 つ受け取るシグナルを発行したいと考えています。ドキュメントに よると

シグナルは QtCore.signal() クラスを使用して定義できます。Python 型と C 型をパラメーターとして渡すことができます。

だから私は次のことを試しました:

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()

しかし、次のエラーが発生します。

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!

代わりに QObject から Foo クラスを派生させると、プログラムはエラーなしで実行されます。しかし、その型が QObject から派生していなくても、カスタム型を引数としてシグナルに渡すことはできませんか?

これは、Windows 7 の python 2.7.2 および PySide 1.0.4 を使用しています。

4

1 に答える 1

7

「古いスタイルのクラス」を作成しましたが、これはシグナル パラメータ タイプとしてサポートされていないようです。

objectクラスは、別の新しいスタイルのクラス、または基本型から継承する必要があります。

class Foo(object):
    pass
于 2012-07-01T00:25:27.107 に答える