Вызвать два отдельных файла 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 ответов

Другие вопросы по тегам