kivy VideoPlayer:全屏模式后视频不会 return 到其原始大小

kivy VideoPlayer: Video does not return to its original size after full screen mode

当我双击视频时,它会全屏显示,但如果我再次双击它,它不会恢复正常。但是,其余 window 元素是部分可见的。下面给出了我负责 VideoPlayer 的 .kv 代码部分:

<VideosWindow>:
name: 'vids'
FloatLayout:
    FileChooserListView:
        id:chooser
        path: root.get_files_list() 
        canvas.before:
            Color:
                rgb: .4, .5, .5
            Rectangle:
                pos: self.pos
                size: self.size
                on_selection: root.select(chooser.selection)
        size_hint: (.9, .15)
        pos_hint: {'x':.05, 'y':.8} 
    VideoPlayer:
        id:vid
        options: {'eos':'loop'}
        size_hint: (.9, .7)
        pos_hint: {'x':.05, 'y':.05} 
    Button:
        size_hint_y: 0.3
        height: 48
        text: "open"
        disabled: not chooser.selection  
        on_release: root.select(chooser.selection)
        size_hint: (.45, .05)
        pos_hint: {'x':.05, 'y':.00}
    Button:
        text: 'Go Back'
        color: (1,1,1,1)
        background_normal:''
        background_color: (0.3,0.6,0.7,1)
        on_release: 
            vid.state = 'pause'
            app.root.current = 'saved_files'
        size_hint: (.45, .05)
        pos_hint: {'x':.50, 'y':.00}

VideosWindow class代码:

class VideosWindow(Screen):
def get_files_list(self):
    files = os.sep.join([my_folder,'mp4'])
    return files

def select(self, filename):
    self.ids.vid.source = filename[0]
    self.ids.vid.state = 'play'

进入全屏模式前后我的程序截图: before after

通过将 VideoPlayer 小部件添加到 GridLayout 解决了这个问题。现在 .kv 代码如下所示:

<VideosWindow>:
name: 'vids'
FloatLayout:
    FileChooserListView:
        id:chooser
        path: root.get_files_list() 
        canvas.before:
            Color:
                rgb: .4, .5, .5
            Rectangle:
                pos: self.pos
                size: self.size
                on_selection: root.select(chooser.selection)
        size_hint: (.9, .15)
        pos_hint: {'x':.05, 'y':.8} 


    GridLayout:
        cols:1
        size_hint: (.9, .7)
        pos_hint: {'x':.05, 'y':.05} 
        VideoPlayer:
            id:vid
            options: {'eos':'loop'}      

      
    Button:
        size_hint_y: 0.3
        height: 48
        text: "open"
        disabled: not chooser.selection  
        on_release: root.select(chooser.selection)
        size_hint: (.45, .05)
        pos_hint: {'x':.05, 'y':.00}
    Button:
        text: 'Go Back'
        color: (1,1,1,1)
        background_normal:''
        background_color: (0.3,0.6,0.7,1)
        on_release: 
            vid.state = 'pause'
            app.root.current = 'saved_files'
        size_hint: (.45, .05)
        pos_hint: {'x':.50, 'y':.00}

不知道这个决定是否正确,但它确实有效。