Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从C+停止嵌入式Python提示符+; 我运行的是一个C++应用程序中嵌入的Python。该程序由一个QTGUI和一个工作QThread组成,在这里进行计算。用户可以选择从文件运行Python脚本或启动Python提示符。两者都在QThread中运行。当python脚本完成或退出python提示符时,程序退出。但是,我想处理用户请求从GUI退出的情况_Python_C++_Python C Api_Embedded Language - Fatal编程技术网

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

从C+停止嵌入式Python提示符+; 我运行的是一个C++应用程序中嵌入的Python。该程序由一个QTGUI和一个工作QThread组成,在这里进行计算。用户可以选择从文件运行Python脚本或启动Python提示符。两者都在QThread中运行。当python脚本完成或退出python提示符时,程序退出。但是,我想处理用户请求从GUI退出的情况,python,c++,python-c-api,embedded-language,Python,C++,Python C Api,Embedded Language,如果运行Python脚本,我可以通过调用PyErr\u SetInterrupt来实现这一点(请参阅)。Python解释器停止,我们可以正常退出。但是,我还没有找到一种好方法来强制Python提示符退出 我尝试将字符输入到stdin(使用ungect)中,希望Python提示符能够接收到字符,但没有成功。我从一个重载的PyOS_-InputHook中执行此操作,我使用它在Python提示符运行时捕获Qt事件 您知道如何正确地强制Python提示符退出吗?您能否在QThread子类上设置插槽接收器

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

我尝试将字符输入到
stdin
(使用
ungect
)中,希望Python提示符能够接收到字符,但没有成功。我从一个重载的
PyOS_-InputHook
中执行此操作,我使用它在Python提示符运行时捕获Qt事件


您知道如何正确地强制Python提示符退出吗?

您能否在
QThread
子类上设置插槽接收器,该子类将在适当的上下文中调用
PyErr\u SetInterrupt


如果不使用QThreads,而是在一个单独的进程中运行嵌入式Python解释器,那么您可能会实现更清晰的关注点分离——然后您可以根据自己的需要
kill
it,或者如果您在POSIX-y平台上,至少可以这样做;我认为这种类型的操作在例如Windows上是完全不同的。

问题在于
PyErr\u setinterput
不会终止Python提示符。将python进程拆分为不同的线程可能是一个解决方案,但它也增加了我试图避免的复杂性。但这可能是一条路。