Kivy Video - используйте короткую сторону для размера - PullRequest
0 голосов
/ 20 сентября 2019

Я использую виджет видео, чтобы установить фоновое видео на Относительный макет, размер видео автоматически подстраивается под размер экрана, и это здорово.Однако я хотел бы, чтобы он делал то же самое, но использовал бы короткую сторону видео для подгонки к экрану, чтобы видео полностью заполняло экран и не оставляло таких «краев», как это

Я подумал, что использование пористой разницы виджета с экраном в файле kv с помощью: size_hint: 1, 1+(root.width-self.width)/root.width исправит его, но обе ширины кажутся равными.

Мои файлы

MainApp.py:

import os
os.environ['KIVY_VIDEO']='ffpyplayer'
import kivy
kivy.require('1.11.1')

from kivy.app import App
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.uix.gridlayout import GridLayout
from kivy.uix.video import Video
from kivy.clock import Clock

class Login(Screen):
    pass

class Loop(Video):
    def __init__(self, **kwargs):
        super(Loop, self).__init__(**kwargs)
        Clock.schedule_interval(self.restart, 3)
        print(self.width)

    def restart(self, dt):
        if self.eos:
            self.position=0
            self.state='play'


class MainApp(App):
    def build(self):
        sm = ScreenManager()
        sm.add_widget(Login(name='Login'))
        return sm

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

app.kv:

<Login>:
    Loop:
        size_hint: 1, 1+(root.width-self.width)/root.width
        source: 'bg_panteras.mp4'
        state: 'play'
        on_eos: 'loop'
    BoxLayout:
        padding: 50
        orientation: 'vertical'
        Label:
            text: 'Panteras'
            font_size: '24dp'
        Label:
            size_hint: 1, 2
        Button:
            text: 'feisbuk'
        Label:
            size_hint: 1, 0.5
        Button:
            text: 'Invitado'
...