如何在播放视频后更改kivy中的当前屏幕

2024-09-29 23:18:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我的应用程序有一个按钮>;点击按钮将开始播放一个视频>;视频结束后,我要导航到最终屏幕。在

#!/usr/bin/kivy
import kivy
kivy.require('1.7.2')

from kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.uix.gridlayout import GridLayout
from kivy.uix.button import Button
import webbrowser
from kivy.uix.videoplayer import VideoPlayer
import time

Builder.load_string('''
<MenuScreen>:
    GridLayout:
        padding: 5
        spacing: 5
        cols: 1
        padding: root.width*0.1
        Button:
            background_normal: ''
            background_color:(0.862, 0.078, 0.235, 0.9)
            text: 'PLAY'
            font_size: '20sp'
            on_press: root.manager.current='vdo'
            on_press: root.val1()
<Vdo>:
    GridLayout:
        cols: 1
        VideoPlayer:
            id: testid
            state: 'stop'
            source: 'http://techslides.com/demos/sample-videos/small.webm'
            fullscreen: True
            image_play: 'black.png'
            image_stop: 'black.png'
            image_pause: 'black.png'
            image_volumehigh: 'black.png'
            image_volumelow: 'black.png'
            image_volumemedium: 'black.png'
            image_volumemuted: 'black.png'
<Final>:
    GridLayout:
        cols: 1
        Label:
            text: 'over'

''')

class MenuScreen(Screen):
    def val1(self):
        print "1 is executed"
        vdo.ids.testid.state='play'
        sm.current='final'

class Vdo(Screen):
    def val2(self):
        print "i am executed"

class Final(Screen):
    def val3(self):
        print "i am executed"

sm = ScreenManager()
menu = MenuScreen(name='menu')
sm.add_widget(menu)
vdo = Vdo(name='vdo')
sm.add_widget(vdo)
final = Final(name='final')
sm.add_widget(final)

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

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

视频结束后,我的代码不会移动到最终屏幕。我试着在视频播放后给予时间睡眠,但在这段时间内,视频将在后台播放。在


Tags: fromimageimportself视频pngdefscreen
1条回答
网友
1楼 · 发布于 2024-09-29 23:18:39

我会尝试将一个函数绑定到VideoPlayer state属性,这样当fire时,您将检查position==duration(结束)并移动到下一个屏幕

<Vdo>:
    video: testid #easier to access this way
    VideoPlayer:
        id: testid
        state: 'stop'
        source: 'http://techslides.com/demos/sample-videos/small.webm'
        fullscreen: True
        image_play: 'black.png'
        image_stop: 'black.png'
        image_pause: 'black.png'
        image_volumehigh: 'black.png'
        image_volumelow: 'black.png'
        image_volumemedium: 'black.png'
        image_volumemuted: 'black.png'

在python代码中:

^{pr2}$

我希望这会有帮助

相关问题 更多 >

    热门问题