首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从Qapplication事件循环创建新的Qapplication

从Qapplication事件循环创建新的Qapplication
EN

Stack Overflow用户
提问于 2016-09-23 19:45:49
回答 1查看 1K关注 0票数 0

我重写了这个问题,使问题更加清楚。

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

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

我知道这不是一个常见的实现,但在我的例子中,让它运行要容易得多。

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

代码语言:javascript
运行
复制
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_()
EN

回答 1

Stack Overflow用户

发布于 2016-09-23 22:26:25

几个问题

  1. 在您的代码中,您没有调用任何多处理代码(可能是一个错误)?
  2. 不要在全局范围内创建第一个QApplication,把它放在一个函数中。在创建新进程之前,multiprocessing将将全局状态复制到新进程,在本例中包括first_app

例如。

代码语言:javascript
运行
复制
def main():
    first_app = QtGui.QApplication(sys.argv)
    ...

if __name__ == '__main__':
    main()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39668472

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档