Bonjour à tous,
Je suis un peu perdu sur ce qu'il vient de m'arriver 
Je développe un logiciel sur une machine, qui utilise un QThread que j'utilise comme dans la doc QT5:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| class WorkerThread : public QThread
{
Q_OBJECT
void run() Q_DECL_OVERRIDE {
QString result;
/* expensive or blocking operation */
emit resultReady(result);
}
signals:
void resultReady(const QString &s);
};
void MyObject::startWorkInAThread()
{
WorkerThread *workerThread = new WorkerThread(this);
connect(workerThread, &WorkerThread::resultReady, this, &MyObject::handleResults);
connect(workerThread, &WorkerThread::finished, workerThread, &QObject::deleteLater);
workerThread->start();
} |
Voici le code ciblé qui me pause problème:
1 2 3 4 5 6
| class Script(QThread):
def __init__(self, code):
super(Script, self).__init__()
self.code = code |
Cela marche sans problème sur mon poste! Sauf que voila j'ai voulu tester sur une autre machine et la j'ai une erreur lors de l'instantiation:
1 2 3
| File "C:\HDF\v0\01_soft\dts\core\script.py", line 34, in __init__
super(Script, self).__init__()
TypeError: __call__() missing 1 required positional argument: 'qthread' |
Si je change ce code par:
super(Script, self).__init__(self)
Il se met à marcher sur cette machine mais plus sur celle ou je développé initialement....
Pareil si je crée un exécutable avec cxfreeze, le meme exe marche sur les 2 machines, celui avec:
super(Script, self).__init__()
Si vous avez des idées... Je ne maitrise pas beaucoup tout ce qui est instanciation, init en python c'est sans doute pour cela que je coince...
Merci d'avance,
Bastien
Partager