Я работаю над киви-фреймворком (v1.10). Я пытаюсь создать простой модуль, который запускает видео в цикле и выходит из приложения, как только кто-то нажимает на экран. ПРИМЕЧАНИЕ. Я разрабатываю это приложение для Raspberry PI и проверил другие примеры (связанные с событиями касания), и они работают нормально. Однажды я потерпел неудачу в автономном видеоприложении для kivy, я попробовал грязный трюк, встраивая видео в макет сетки, а затем связывая событие on_press макета с вызов, который закрывает приложение. так что я мог захватить событие, но не помогло. В документации приложения Kivy упоминается, что это достижимо, но это не так. Ниже приведен пример кода, над которым я работаю. PS: он будет работать даже на машине, и для его выполнения не потребуется Raspberry PI.
#!/usr/bin/python3
# -*- coding: <UTF-8> -*-
import kivy
kivy.require('1.10.0')
from os.path import dirname, join
from kivy.app import App
from kivy.uix.videoplayer import Video
from kivy.uix.gridlayout import GridLayout
from kivy.logger import Logger
from kivy.clock import Clock
from kivy.properties import ObjectProperty
from kivy.uix.videoplayer import VideoPlayer
class VideoPlayerApp(App):
def build(self):
movie = Movie()
layout = GridLayout(cols=2)
layout.add_widget(movie.loadMovie(source='./media/SampleVideo_1280x720_1mb.mp4'))
self.bind(on_press = self.on_stop) #Not working :(
return layout
def on_stop(self):
return True
class Movie():
video = ObjectProperty(None)
def loadMovie(self, **kwargs):
filename = './media/SampleVideo_1280x720_1mb.mp4'
return VideoPlayer(source=filename, state='play', options={'eos': 'loop'})
def check(self):
Logger.info("film position:" + str(self.video.position))
if __name__ == '__main__':
VideoPlayerApp().run()