1

私のコード(python2.6、PyQt4)では、次のようにします。

def myRun():
    doStuff
thread = QtCore.QThread()
thread.run = myRun
thread.start()

私のgentooマシンでは、これは完全に機能します。ubunut(9.10、Karmic Koala)では機能せず、次のように表示されます。タイプエラー:myRun()は引数を取りません(1つ指定)

QTで何か変更がありましたか?どうすれば両方のマシンでこれを機能させることができますか?

ありがとう!ネイサン

4

1 に答える 1

2

それがどのように機能したかはわかりません。QThreadをサブクラス化し、run()メソッドをオーバーライドすることになっています。「引数を取らない」エラーは、QTランタイムがクラスメソッドの最初の引数として「self」を渡そうとしているためです。以下は、必要なものに近いものです。

def myThread(QtCore.QThread):
    def run(self):
        pass

thread = myThread()
thread.start()

更新:オリジナルともう少し一致します。

def myRun():
    doStuff

thread = QtCore.QThread()
thread.run = lambda self: myRun()
thread.start()
于 2010-07-14T19:49:12.650 に答える