Я хочу отложить функцию в коде, но не на весь сценарий, потому что если я это сделаю, анимация обратного отсчета перестанет воспроизводиться, потому что, когда вы используете функцию 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()