вызвать два отдельных файла Python из C ++ с PythonQt

В настоящее время я использую pythonQt, я звоню evalFile функция для вызова моего файла Python в ресурсах. Я хочу вызвать два отдельных файла Python (например, main_1.py и main_2.py) из моих пользовательских классов (worker1 и worker2). Но проблема заключается в том, что каждый мой класс работает в подпотоке. Как я могу это сделать? приведенный ниже пример кода дает мне ошибку в PythonQt::init();

worker1.h

#ifndef WORKER1_H
#define WORKER1_H

#include <QObject>

class worker1 : public QObject
{
Q_OBJECT
public:
explicit worker1(QObject *parent = 0);

public slots:
void onTimeout();
};

#endif // WORKER1_H

worker1.cpp

#include <QDebug>
#include <QThread>
#include "worker1.h"#include <PythonQt.h>

worker1::worker1(QObject *parent) : QObject(parent)
{

}

void worker1::onTimeout()
{
qDebug()<<" Worker::onTimeout get called from Worker_1?: "<< QThread::currentThreadId();
PythonQt::init();
PythonQtObjectPtr mainModule =
PythonQt::self()->getMainModule();
mainModule.evalFile(":/test/main_1.py");
}

работник2 похож на работник1.

main.cpp

#include <QApplication>
#include <QObject>
#include <PythonQt.h>
#include <QDebug>
#include <QThread>
#include <QTimer>
#include "worker1.h"#include "worker2.h"
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
qDebug()<<"From main thread: "<<QThread::currentThreadId();

QThread t;
QThread t_2;
QTimer timer;
timer.setSingleShot(true);
worker1 worker;
worker2 worker_2;

QObject::connect(&timer, SIGNAL(timeout()), &worker, SLOT(onTimeout()));
QObject::connect(&timer, SIGNAL(timeout()), &worker_2, SLOT(onTimeout()));
timer.start(1000);
worker.moveToThread(&t);
worker_2.moveToThread(&t_2);

t.start();
t_2.start();

return a.exec();
}

main_1.py

def add_loop( l):

for i in range(l):
print ("1")
return 10000

print (add_loop(10000))
print ("Test_1")

ФИЛЬМЫ ПОХОЖИЕ НА main_1.py

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]