Киви Стоп Видео и шоу фото - PullRequest
0 голосов
/ 26 февраля 2019

Я работаю над Kivy Framework (v1.10).Я пытаюсь создать простое программное обеспечение для фотобудки, которое запускает цикл видео и останавливает видео, когда кто-то нажимает на экран.После этого камера делает снимок, и программа отображает его на мониторе вместе с двумя кнопками да или нет.они позволят вам повторить фото.Я разрабатываю это приложение для Raspberry PI.У меня вопрос: как мне остановить видео и сделать что-то еще?источник видео в этой функции self.bind (on_touch_down = self.on_stop)?Я хотел бы добавить видео с обратным отсчетом времени и позволить ему снимать камеру, фотографируя.затем отобразите эту фотографию один раз с помощью кнопок: повторите и продолжите.

from kivy.app import App
from kivy.logger import Logger
from kivy.uix.videoplayer import Video
from kivy.uix.label import Label
from kivy.uix.button import Button
from kivy.uix.boxlayout import BoxLayout



class Player(Video):
    def __init__(self,  **kwargs):
        super(Player,  self).__init__(**kwargs)
        self.source = './START.mp4'
        self.state='play'
        self.options={'eos': 'loop'}
        self.bind(on_touch_down = self.on_stop)
        self.get_set_current_video_state = self.get_set_current_video_state()

    def check(self):
        Logger.info("film position:" + str(self.position))

    def on_stop(self,  *args):
        print ('I have been clicked')
        Player.state='stop'
        #App.get_running_app().stop()
        #self.get_set_current_video_state = ('pause')
        return MyWindowApp().run()


class VideoPlayerApp(App):
    def build(self):
        return Player()

class MyWindowApp(App):

    def __init__(self):
        super(MyWindowApp, self).__init__()


        self.btn = Button(text='Push Me!')
        self.lbl = Label(text='Read Me!')

1 Ответ

0 голосов
/ 26 февраля 2019

Вместо того, чтобы пытаться использовать два Apps, просто используйте два Screens.Вот модификация вашего кода с использованием Screens:

from kivy.app import App
from kivy.logger import Logger
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.uix.video import Video
from kivy.uix.label import Label
from kivy.uix.button import Button



class Player(Video):
    def __init__(self,  **kwargs):
        super(Player,  self).__init__(**kwargs)
        self.source = './START.mp4'
        self.state='play'
        self.options={'eos': 'loop'}
        self.bind(on_touch_down = self.on_stop)

    def check(self):
        Logger.info("film position:" + str(self.position))

    def on_stop(self,  *args):
        print ('I have been clicked')
        self.state='stop'  # stop the video
        sm.current = 'WindowApp'  # switch to the other Screen


class MyWindowApp(Screen):

    def __init__(self, **kwargs):
        super(MyWindowApp, self).__init__(**kwargs)


        self.btn = Button(text='Push Me!', pos_hint={'center_x': 0.5, 'center_y': 0.75}, size_hint=(0.2, 0.2))
        self.lbl = Label(text='Read Me!', pos_hint={'center_x': 0.5, 'center_y': 0.25})

        self.add_widget(self.btn)
        self.add_widget(self.lbl)

sm = ScreenManager()
screen1 = Screen(name='video')
screen1.add_widget(Player())
sm.add_widget(screen1)
screen2 = MyWindowApp(name='WindowApp')
sm.add_widget(screen2)

class VideoPlayerApp(App):
    def build(self):
        return sm


VideoPlayerApp().run()

Я исправил ваш импорт до from kivy.uix.video import Video

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...