我正在运行嵌入在C ++应用程序中的Python。该程序由Qt GUI和工作QThread组成,其中计算发生。用户可以选择从文件运行Python脚本或启动Python提示符。两者都在QThread中运行。当python脚本完成或退出python提示符时,程序退出。但是,我想在用户请求退出GUI时处理这种情况。
如果运行Python脚本,我可以通过调用PyErr_SetInterrupt
来实现此目的(请参阅Stopping embedded Python)。 Python解释器停止,我们可以正常退出。但是,我还没有找到一种强制Python提示退出的好方法。
我已尝试将字符提供给stdin
(带ungetc
),希望Python提示能够接收它们但却没有成功。我是通过在Python提示符运行时用来捕获Qt事件的重载PyOS_InputHook
来完成的。
如何正确强制Python提示退出?
答案 0 :(得分:1)
您是否可以在QThread
子类上设置一个插槽接收器,它将在适当的上下文中为您调用PyErr_SetInterrupt
?
如果您不是使用QThreads,而是在一个单独的过程中运行嵌入式Python解释器,那么您可以实现更清晰的关注点分离 - 然后您可以根据需要kill
将其解析,或者至少可以如果你在POSIX-y平台上;我认为这种类型的操作在例如视窗。