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:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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