Как остановить предварительный просмотр PiCamera при нажатии клавиши?

Я создал код через python для предварительного просмотра моей PiCamera, я установил время на 10 секунд, а затем автоматически выключается. Однако я не уверен, как можно одним нажатием клавиши остановить камеру и вернуться к предыдущему экрану? На данный момент я могу просматривать в течение 10 секунд, и ничего больше, обычные ctrl-c и различные другие клавиши не работают.

Как я могу интегрировать нажатие клавиши в следующий код, чтобы остановить скрипт и вернуться к нормальному экрану?

from picamera import PiCamera
from time import sleep

camera = PiCamera()

camera.start_preview()
sleep(10)
camera.stop_preview()

person Weatherhead Pi    schedule 08.06.2017    source источник
comment
Возможно, вы можете использовать что-то вроде цикла while или, если вы можете получить ввод, выберите специальный символ. В любом случае добро пожаловать с первым вопросом;)   -  person Marco smdm    schedule 08.06.2017
comment
Если вы просто хотите бесконечно запускать камеру и продолжать что-то еще, вы можете использовать модуль подпроцесса и открыть (Popen) новый процесс для камеры.   -  person Marco smdm    schedule 08.06.2017
comment
Спасибо за совет, вы хоть представляете, как это будет помещено в мой код? Я не уверен в требуемой формулировке, я раньше не нажимал клавиши.   -  person Weatherhead Pi    schedule 12.06.2017


Ответы (1)


Модуль подпроцесса вы можете проверить на официальной странице:

https://docs.python.org/2/library/subprocess.html#subprocess.Popen

Возможный способ реализации с помощью subprocess.Popen находится здесь, на SO:

Управление скриптом Python из другого скрипта

Другая возможность - использовать многопроцессорный или многопоточный модуль. Например, можно создать поток, и вы можете позаботиться об идентификаторе :-)

Все возможности приведут вас к более глубокому изучению Python!

Мое лучшее предложение - легко создать ветку (https://docs.python.org/3/library/threading.html -> здесь для python 3), получите идентификатор и оставьте его включенным.

Если вы хотите прекратить работу камеры, прервите поток :-)

person Marco smdm    schedule 12.06.2017