我正在运行嵌入在 C++ 应用程序中的 Python。该程序由一个 Qt GUI 和一个用于计算的工作 QThread 组成。用户可以选择从文件运行 Python 脚本或启动 Python 提示符。两者都在 QThread 中运行。当 python 脚本完成或当我们退出 python 提示符时程序退出。但是,我想处理用户请求退出 GUI 的情况。
如果运行 Python 脚本,我可以通过调用 PyErr_SetInterrupt
(参见 Stopping embedded Python)来实现。 Python解释器停止了,我们可以正常退出了。但是,我还没有找到强制退出 Python 提示符的好方法。
我已经尝试将字符输入 stdin
(使用 ungetc
),希望 Python 提示符能接收到它们,但没有成功。我通过重载的 PyOS_InputHook
执行此操作,我用它在 Python 提示符运行时捕获 Qt 事件。
关于如何正确强制 Python 提示退出的任何想法?
最佳答案
你能不能在你的 QThread
子类上设置一个插槽接收器,它将在适当的上下文中为你调用 PyErr_SetInterrupt
?
如果您不使用 QThreads,而是在单独的进程中运行嵌入式 Python 解释器,您可能会实现更清晰的关注点分离——然后您可以根据需要kill
它,或者在如果你在 POSIX-y 平台上,至少你可以;我认为这种类型的操作在例如 window 。
关于python - 从 C++ 停止嵌入式 Python 提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39472584/