Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/316.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 VideoPlayer全屏、循环和隐藏控件_Python_Kivy - Fatal编程技术网

Python Kivy VideoPlayer全屏、循环和隐藏控件

Python Kivy VideoPlayer全屏、循环和隐藏控件,python,kivy,Python,Kivy,我刚从Kivy开始,所以如果我做错了什么,请指出。。我正在试着使用视频播放器。也就是说,我似乎无法让它识别任何“选项”,我真的希望找到一种隐藏控件的方法(防止用户在电影运行时停止/暂停/更改音量/交互等) 以下是到目前为止我得到的信息: import kivy kivy.require('1.9.0') from kivy.app import App from kivy.uix.videoplayer import VideoPlayer class MyApp(App): def

我刚从Kivy开始,所以如果我做错了什么,请指出。。我正在试着使用视频播放器。也就是说,我似乎无法让它识别任何“选项”,我真的希望找到一种隐藏控件的方法(防止用户在电影运行时停止/暂停/更改音量/交互等)

以下是到目前为止我得到的信息:

import kivy
kivy.require('1.9.0')

from kivy.app import App
from kivy.uix.videoplayer import VideoPlayer

class MyApp(App):
    def build(self):
        self.player = VideoPlayer(fullscreen=True, allow_fullscreen=True, source='mymovie.mp4', state='play', options={'allow_stretch': True, 'eos': 'loop', 'fullscreen': True})
        return(self.player)


if __name__ == '__main__':
    MyApp().run()
eos:上面的“循环”似乎被完全忽略了。“全屏”也是如此。双击播放器不会使其全屏运行

我正在Windows上进行测试(但希望移植到android),在后台的“控制台”窗口中,我有两个警告应该对我有所帮助,但我想我不知道如何处理它:

[WARNING           ] [VideoPlayer ] Cannot switch to fullscreen, window not found.
[WARNING           ] [VideoPlayer ] Cannot switch to fullscreen, window not found.
理想情况下,我会让它全屏运行,并能够禁用控件(这样用户可以使用键盘/触摸/定时器事件等与事物交互),但我找不到任何关于如何禁用它们的文档。有什么建议吗

我已经设法让窗口本身全屏运行,但我认为这不是同一回事。
谢谢

我用
kivy.uix.video.video
而不是
kivy.uix.videoplayer.videoplayer
解决了我的问题。我不知道这是否是我一开始就应该做的(刚开始!),但为了防止其他人有这个问题,以下是对我有效的方法:

import kivy
kivy.require('1.9.0')

from kivy.app import App
from kivy.uix.video import Video

class MyApp(App):
    def build(self):
        video = Video(source='mymovie.mp4')
        video.state='play'
        video.options = {'eos': 'loop'}
        video.allow_stretch=True
        return video

if __name__ == '__main__':
    MyApp().run()

下面是我为自己制作的一个示例,它演示了许多这些特性。它回答了你的问题

import kivy
kivy.require('1.9.0')
import time
import os
import sys
import psutil
import logging

from kivy.app import App
from kivy.uix.video import Video
from kivy.config import Config
from kivy.core.window import Window
Config.set('graphics', 'position', 'custom')
Config.set('graphics', 'left', 0)
Config.set('graphics', 'top',  500)
Config.set('graphics', 'resizable', 'False')
#Config.set('graphics', 'borderless',  1)
Config.set('graphics', 'width', 1127)
Config.set('graphics', 'height', 636)

class MyApp(App):

    video = None
    def build(self):
        Window.bind(on_keyboard=self.on_keyboard)  # bind our handler
        self.video = Video(source='C:\\drop.mp4')
        self.video.state='play'
        #self.video.options = {'eos': 'loop'}
        self.video.allow_stretch=True
        self.video.pos_hint = {'top': 1.0}
        self.video.bind(eos=self.VideoDone)
        return self.video

    def VideoDone(self, value, value2):
        print ("video done", value, value2)

    def on_stop(self):
        # The Kivy event loop is about to stop, set a stop signal;
        # otherwise the app window will close, but the Python process will
        # keep running until all secondary threads exit.
        print ('stopping and closing kivy')
        #self.video.state='stop'


    def on_keyboard(self, window, key, scancode, codepoint, modifier):
        print (window, key, scancode, codepoint, modifier)
        if codepoint == 'p':
            print ('pausing with p pressed')
            self.video.state='stop'
        if codepoint == 's':
            print ('starting with s pressed')
            self.video.state='play'
        if codepoint == 'r':
            print ('re-starting with r pressed')
            self.video.seek(0, precise=True)




if __name__ == '__main__':
    print ("hi")
    MyApp().run()

我不确定我是瞎了还是怎么了,但现在好像循环视频的选项(“eos”:“loop”)正在工作。切换到全屏和隐藏视频控件仍然有问题,尽管: