Как я могу приостановить строку кода в python, не останавливая весь сценарий? - PullRequest
0 голосов
/ 24 февраля 2020

Я хочу отложить функцию в коде, но не на весь сценарий, потому что если я это сделаю, анимация обратного отсчета перестанет воспроизводиться, потому что, когда вы используете функцию time.sleep (), если все приложение переходит в спящий режим. Поэтому я спрашиваю, есть ли способ отложить только функцию или строку кода, которая выполняет функцию фото?

Это мой код:

import kivy
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.uix.videoplayer import Video
from kivy.uix.video import Video
from kivy.config import Config
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.button import Button
import sys
import os
import subprocess
import datetime
import time
import threading

class MyPhotoBoothApp(App):
    def build(self):
        global fl
        fl = FloatLayout()
        fl = FloatLayout(size=(300, 300))
        global buttonstart
        buttonstart = Button(text=' ', background_color=[0, 0, 0, 0], on_press=self.startcycle)
        fl.add_widget(buttonstart)
        global videostart
        videostart = Video(source='C:/PhotoBooth/animations/Start/TouchHereToStart.mov',  state='play', options={'allow_stretch': False})
        videostart.options = {'eos': 'loop'}
        fl.add_widget(videostart)
        return fl

    def startcycle(self, *arg):
        fl.remove_widget(buttonstart)
        fl.remove_widget(videostart)
        self.countdown = Video(source='C:/PhotoBooth/animations/Countdown/Countdown.mov',  state='play', options={'allow_stretch': False})
        self.countdown.options = {'eos': 'false'}
        countdowntimer = threading.Thread(target=self.countdown)
        fl.add_widget(self.countdown)
        #self.takephoto()
        return fl

    def takephoto(self, *arg):
        countdowntimer.join()
        print("DONE")
        def func_TakeNikonPicture(input_filename):
            camera_command = 'C:\Program Files (x86)\digiCamControl\CameraControlCmd.exe'
            camera_command_details = '/filename C:testing/' + input_filename + ' /capturenoaf'
            full_command=camera_command + ' ' + camera_command_details
            p = subprocess.Popen(full_command, stdout=subprocess.PIPE, universal_newlines=True, shell=False)


        if(len(sys.argv) < 2):
            rawimagename = 'photo.jpg'
        else:   

            files = sys.argv[1:len(sys.argv)]

            rawimagename = files[0]
            if(os.path.isfile(rawimagename) is True):
                print("Image saved")
                sys.exit()


        current_dt=datetime.datetime.now().strftime('%Y%m%d_%H%M%S')
        rawimagename=current_dt + '_' + rawimagename

        func_TakeNikonPicture(rawimagename)

    #func_TakeNikonPicture(rawimagename)

Config.set('graphics', 'fullscreen', 'auto')
Config.set('graphics', 'window_state', 'maximized')
Config.set('graphics', 'rotation', 0)
MyPhotoBoothApp().run()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...