Параметры Python QThread.run - менялись между версиями? - PullRequest
1 голос
/ 14 июля 2010

В моем коде (python2.6, PyQt4) я делаю что-то вроде этого:

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

На моей машине gentoo это работает отлично. На убунуте (9.10, кармическая коала) он не работает, он говорит: Ошибка типа: myRun () не принимает аргументов (задано 1)

Что-то изменилось в QT? Как я могу заставить это работать на обеих машинах?

Спасибо! Nathan

1 Ответ

2 голосов
/ 14 июля 2010

Я не уверен, как это сработало; вы должны создать подкласс QThread и переопределить метод run (). Ошибка «не принимает аргументов» вызвана тем, что среда выполнения QT пытается передать «я» в качестве первого аргумента метода класса. Следующее ближе к тому, что вам нужно:

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