Я запускаю Python, встроенный в приложение на C++. Программа состоит из графического интерфейса Qt и работы QThread, где происходят вычисления. Пользователь может выбрать запуск сценария Python из файла или запуск приглашения Python. Оба запускаются в QThread. Программа выходит, когда выполняется скрипт python или когда мы выходим из приглашения python. Тем не менее, я хочу обработать случай, когда пользователь просит выйти из графического интерфейса.Остановить встроенную подсказку Python от C++
Если вы используете скрипт Python, я могу достичь этого, позвонив по телефону PyErr_SetInterrupt
(см. Stopping embedded Python). Переводчик Python останавливается, и мы можем нормально выйти. Тем не менее, я не нашел хороший способ заставить приглашение Python завершить работу.
Я пробовал подавать символы до stdin
(с ungetc
) в надежде, что приглашение Python получит их, но безуспешно. Я делаю это из перегруженного PyOS_InputHook
, который я использую, чтобы поймать события Qt во время выполнения приглашения Python.
Любые идеи о том, как правильно заставить приглашение Python выйти?
Проблема в том, что 'PyErr_SetInterrput' не завершает запрос Python. Разделение процесса python на другой поток может быть решением, но оно также добавляет сложности, которых я пытался избежать. Возможно, это и есть путь. – Jose