我在.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发生了变化,但它没有更新视频小部件的来源。单击按钮后如何更改视频?
答案 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