4

Pyside のドキュメントには、スロットが戻り値を持つことができると記載されていますが、それを行う方法はまだわかりません。

これに関する使用可能なコードサンプルが見つからなかったため、ドキュメントが示唆するようにデコレータを追加しました:

def testSlot(self):
    print('testSlot called')
    return 'RETURN VALUE RETURN VALUE RETURN VALUE'

そして、私は次のように戻り値をキャプチャしようとしています:

ret = foo.testSignal.emit()

しかし、それは機能していません。ここで見つけることができる私のテストコードも、このエラー出力でクラッシュします。助けていただければ幸いです。

編集:クラッシュの問題を解決するデコレータを削除しましたが、返してほしい値はまだ返されません。

スクリプトをそのまま実行すると、次のようになります。

foo.testSignal.emit() testSlot が True
と呼ばれる

4

2 に答える 2

4

私はあなたが不可能だと思うことを恐れています。シグナルとスロットは疎結合であるため、シグナルを発行してもスロットは直接呼び出されないため、「その」戻り値を取得できません

これについて考えると、これはより明確になるかもしれません:

異なる値を返す 2 つの異なるスロット(たとえば 2 つの異なるクラス)を 1 つのシグナルに接続できます。割り当てようとしている変数に到達するはずの 2 つの戻り値はどれですか?

おそらくこれは次のことを意味します。これはまったく異なるものであり、「名前」でMetaObjectシステムを介してメソッドを「呼び出す」ことで戻り値を許可します。

于 2013-06-10T07:46:37.690 に答える