2

奇妙な問題があります。これが私のコードです:

def method1(self, arg1, delay=True):
    """This is a method class"""

    def recall(arg1):
        self.method1(arg1, delay=False)
        return

    if delay:
            print "A: ", arg1, type(arg1)
            QtCore.QTimer.singleShot(1, self, QtCore.SLOT(recall(int)), arg1)
            return

    print "B: ", arg1, type(arg1)

だから私はコンソールでこれを取得します:

A:  0 <type 'int'>
B:  <type 'int'> <type 'type'>

「B」では、「A」と同じ結果になるはずです。誰が何が悪いのか知っていますか?タイプの代わりに arg1 値を取得するにはどうすればよいですか? これでは意味がありません...

PS: 私はこのようなことを試みています: http://lists.trolltech.com/qt-interest/2004-08/thread00659-0.html

4

2 に答える 2

10

関数に渡さSLOTれるパラメーターは、直接呼び出しではなく、パラメーターとして型を持つ文字列でなければならないため、パラメーターを持つスロットをパラメーターのないシグナルに接続することはできません。

代わりにラムダ関数を使用できます。

QtCore.QTimer.singleShot(1, lambda : self.recall(arg1))
于 2011-09-21T09:31:43.560 に答える
1

これを呼び出すと、次のようになります。

QtCore.QTimer.singleShot(1, self, QtCore.SLOT(recall(int)), arg1)

代わりにこれを呼び出すつもりですか?

QtCore.QTimer.singleShot(1, self, QtCore.SLOT(recall(arg1)), arg1)

intの最初の引数として渡します。これによりrecall、直接 に渡されmethod1ます。int型オブジェクト (整数の型) です。

于 2011-09-20T17:49:00.153 に答える