Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Kivy应用程序运行视频;点击事件不工作_Python_Kivy_Kivy Language - Fatal编程技术网

Python Kivy应用程序运行视频;点击事件不工作

Python Kivy应用程序运行视频;点击事件不工作,python,kivy,kivy-language,Python,Kivy,Kivy Language,我正在开发kivy框架(v1.10)。我试图创建一个简单的模块,它运行一个视频输入循环,一旦有人点击屏幕就退出应用程序。注意:我正在为Raspberry PI开发这个应用程序,我检查了其他(与tap事件相关的)示例,它们运行良好。有一次,我在kivy的独立视频应用程序中失败了,我尝试了一个肮脏的把戏,将视频嵌入网格布局,然后将布局的on_press事件与退出应用程序的绑定。这样我就可以捕捉到这一事件,但没有起到任何作用。提到这是可以实现的,但事实并非如此。 下面是我正在编写的示例代码。PS:它甚

我正在开发kivy框架(v1.10)。我试图创建一个简单的模块,它运行一个视频输入循环,一旦有人点击屏幕就退出应用程序。注意:我正在为Raspberry PI开发这个应用程序,我检查了其他(与tap事件相关的)示例,它们运行良好。有一次,我在kivy的独立视频应用程序中失败了,我尝试了一个肮脏的把戏,将视频嵌入网格布局,然后将布局的on_press事件与退出应用程序的绑定。这样我就可以捕捉到这一事件,但没有起到任何作用。提到这是可以实现的,但事实并非如此。 下面是我正在编写的示例代码。PS:它甚至可以在机器上运行,而且不需要树莓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()
#/usr/bin/python3
#-*-编码:-*-
进口克维
kivy.require('1.10.0')
从os.path导入目录名,加入
从kivy.app导入应用程序
从kivy.uix.videoplayer导入视频
从kivy.uix.gridlayout导入gridlayout
从kivy.logger导入记录器
从kivy.clock导入时钟
从kivy.properties导入ObjectProperty
从kivy.uix.videoplayer导入videoplayer
课堂视频播放器App(应用程序):
def生成(自):
电影
布局=网格布局(cols=2)
layout.add_小部件(movie.loadMovie(source='./media/SampleVideo_1280x720_1mb.mp4'))
self.bind(on_press=self.on_stop)#不工作:(
返回布局
def on_停止(自):
返回真值
类电影():
视频=对象属性(无)
def LOADMOVICE(自身,**kwargs):
文件名='。/media/SampleVideo_1280x720_1mb.mp4'
返回VideoPlayer(source=filename,state=play,options={'eos':'loop'})
def检查(自我):
Logger.info(“胶片位置:+str(self.video.position))
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
VideoPlayerApp().run()

如果您不需要这些控件,请使用
kivy.uix.videoplayer.Video
类。另一方面,按下
按钮时的
不是
应用程序
网格布局
视频
的有效事件,请在按下按钮时使用
事件或在按下按钮时定义自己的
事件

#!/usr/bin/python3
# -*- coding: <UTF-8> -*-
import kivy
kivy.require('1.10.0')

from kivy.app import App
from kivy.logger import Logger
from kivy.uix.videoplayer import Video

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

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

    def _stop(self,  *args):
        App.get_running_app().stop()


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

if __name__ == '__main__':
    VideoPlayerApp().run()
!/usr/bin/python3
#-*-编码:-*-
进口克维
kivy.require('1.10.0')
从kivy.app导入应用程序
从kivy.logger导入记录器
从kivy.uix.videoplayer导入视频
班级播放器(视频):
定义初始(自我,**kwargs):
超级(玩家,自我)。\uuuuu初始值(**kwargs)
self.source='。/media/SampleVideo_1280x720_1mb.mp4'
self.state='play'
self.options={'eos':'loop'}
self.bind(按下=self.\u停止)
def检查(自我):
记录器信息(“胶片位置:+str(自身位置))
def_停止(自,*参数):
App.get_running_App().stop()
课堂视频播放器App(应用程序):
def生成(自):
返回玩家()
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
VideoPlayerApp().run()

如果您不需要这些控件,请使用
kivy.uix.videoplayer.Video
类。另一方面,按下
按钮时的
不是
应用程序
网格布局
视频
的有效事件,请在按下按钮时使用
事件或在按下按钮时定义自己的
事件

#!/usr/bin/python3
# -*- coding: <UTF-8> -*-
import kivy
kivy.require('1.10.0')

from kivy.app import App
from kivy.logger import Logger
from kivy.uix.videoplayer import Video

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

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

    def _stop(self,  *args):
        App.get_running_app().stop()


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

if __name__ == '__main__':
    VideoPlayerApp().run()
!/usr/bin/python3
#-*-编码:-*-
进口克维
kivy.require('1.10.0')
从kivy.app导入应用程序
从kivy.logger导入记录器
从kivy.uix.videoplayer导入视频
班级播放器(视频):
定义初始(自我,**kwargs):
超级(玩家,自我)。\uuuuu初始值(**kwargs)
self.source='。/media/SampleVideo_1280x720_1mb.mp4'
self.state='play'
self.options={'eos':'loop'}
self.bind(按下=self.\u停止)
def检查(自我):
记录器信息(“胶片位置:+str(自身位置))
def_停止(自,*参数):
App.get_running_App().stop()
课堂视频播放器App(应用程序):
def生成(自):
返回玩家()
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
VideoPlayerApp().run()

您想启用视频播放器的控件(播放按钮、停止按钮等)?还是想在触摸应用程序的任何部分时关闭应用程序?是的,我想在触摸应用程序的任何部分时关闭应用程序,但我不想使用按钮(即使上面的代码可能正在显示这些按钮)。是否要启用视频播放器的控件(播放按钮、停止按钮等)?还是希望在触摸应用程序的任何部分时关闭应用程序?是的,我希望在触摸应用程序的任何部分时关闭应用程序,但我不希望按钮(即使上面的代码可能正在显示这些按钮)。