0

我已经重写了这个问题,以便更清楚。

在我的代码中,我创建了一个 QApplication,使用 QTimer.singleShot() 将一个插槽连接到应用程序,然后执行我的应用程序。

现在在这个插槽中,我想在另一个进程中创建另一个 QApplication,我使用了 multiprocessing.Process 类,并从进程内部尝试启动另一个 QApplication 并执行它,但是我有一个错误,因为事件循环已经在运行!,我知道我不能运行两个事件循环,但我正在另一个进程中运行新的 QApplication,所以它应该运行。

我知道这不是一个常见的实现,但在我的情况下运行它会容易得多。

这是一个代码示例:我得到的错误是“QCoreApplication::exec: 事件循环已经在运行”

import multiprocessing
from PyQt4 import QtCore,QtGui

def first_app_slot():
    mProcess = multiprocessing.Process(target = run_another_app)
    mProcess.start()
    mProcess.join()

def run_another_app():
    second_app = QtGui.QApplication([])
    second_app.exec_()

if __name__ == "__main__":
    first_app = QtGui.QApplication([])
    QtCore.QTimer.singleShot(0,first_app_slot)
    first_app.exec_()
4

1 回答 1

0

几个问题

  1. 在您的代码中,您没有调用任何多处理代码(可能是错字)?

  2. 不要QApplication在全局范围内创建第一个,将其放在函数中。在创建新进程之前,multiprocessing会将全局状态复制到新进程,其中包括first_app在本例中。

前任。

def main():
    first_app = QtGui.QApplication(sys.argv)
    ...

if __name__ == '__main__':
    main()
于 2016-09-23T22:26:25.307 回答