1

我正在运行嵌入在 C++ 应用程序中的 Python。该程序由一个 Qt GUI 和一个用于计算的工作 QThread 组成。用户可以选择从文件运行 Python 脚本或启动 Python 提示符。两者都在 QThread 中运行。当 python 脚本完成或我们退出 python 提示时,程序退出。但是,我想处理用户请求退出 GUI 的情况。

如果运行 Python 脚本,我可以通过调用来实现这一点PyErr_SetInterrupt(请参阅停止嵌入式 Python)。Python解释器停止,我们可以正常退出。但是,我还没有找到强制退出 Python 提示的好方法。

我尝试将字符输入stdin(with ungetc),希望 Python 提示符接收到它们但没有成功。我从一个重载PyOS_InputHook中执行此操作,该重载用于在 Python 提示符运行时捕获 Qt 事件。

任何想法如何正确强制 Python 提示退出?

4

1 回答 1

1

你不能在你的QThread子类上设置一个槽接收器来为你调用PyErr_SetInterrupt适当的上下文吗?

如果您不使用 QThreads,而是在单独的进程中运行嵌入式 Python 解释器,那么您可能会实现更清晰的关注点分离——然后您可以kill按照自己的意愿使用它,或者至少如果您使用的是 POSIX-平台;我认为这种类型的操作在例如​​ Windows 上是不同的。

于 2016-09-22T00:49:28.903 回答