Kivy - 使用按钮

时间:2016-02-14 11:56:44

标签: python kivy

我在.py文件中有这些

class Main(App):
    def build(self):
        self.title = 'NBA Highlights'
        Window.maximize()
        return MainApp()

class MainApp(BoxLayout):
    vid = "Top 10 Plays of 2015"

    def __init__(self,**kwargs):
        super(MainApp,self).__init__(**kwargs)

    def change_Vid(self, next_vid):
        self.vid = next_vid
        return self.vid

if __name__ == "__main__":
    Main().run()

这是我的.kv文件

<MainApp>:
    Button:
        text: 'Click to change video'
        on_press: root.change_Vid('Top 10 Assists of 2015')
    Video:
        source: 'Videos/' + root.vid + '.mp4'
        state: 'play'

当我运行代码时,它会播放视频&#39; 2015年十大剧目&#39;但是当我按下按钮时它不会改为2015年前10名助手&# 39;

我可以看到root.vid发生了变化,但它没有更新视频小部件的来源。单击按钮后如何更改视频?

1 个答案:

答案 0 :(得分:0)

这是因为Video对象永远不会知道其根的vid属性已经改变。相反,将vid作为Video的属性:

<MainApp>:
    Button:
        text: 'Click to change video'
        on_press: root.change_Vid('Top 10 Assists of 2015')
    Video:
        id: video
        vid: 'Top 10 Plays of 2015'
        source: 'Videos/' + self.vid + '.mp4'
        state: 'play'
        on_vid: self.source = 'Videos/' + self.vid + '.mp4'

并更改处理程序:

def change_Vid(self, next_vid):
        self.ids.video.vid = next_vid
        return self.ids.video.vid