所以我正在创建一个像Youtube但不在线的视频播放器。所以我的主动视频布局包括标题和视频,另一个布局是相关视频,其中包含现在其他视频的标题。
class MainApp(Screen):
vid = "Top 10 Plays of 2015"
title = "Top 10 Plays of 2015"
def __init__(self,**kwargs):
super(MainApp,self).__init__(**kwargs)
pass
class OtherVideos(BoxLayout):
def __init__(self, **kwargs):
super(OtherVideos,self).__init__(**kwargs)
self.loadVideos()
def loadVideos(self):
con = MongoClient()
db = con.nba
vids = db.videos.find()
vidnum = 1
for filename in vids:
myid = "vid" + str(vidnum)
label = Label(id=myid,
markup=True,
text="[ref=act]" + filename['filename'] + "[/ref]",
color=[0,0.7,1],
bold=1)
label.bind(on_ref_press=lambda inst, val:self.change_Title(filename['filename']))
self.add_widget(label)
vidnum += 1
def change_Title(self, next_title):
MainApp.title = next_title
pass
在我的kivy代码中:
Label:
id: lblTitle
text: root.title
所以我想要做的是编辑Class MainApp中的title变量,所以我需要点击Label(这是其他视频布局中的标题),并且应该更改title变量。标签是根据数据库中的数据动态创建的。
我可以通过执行(print(MainApp.title))看到shell上的标题变量发生变化,但它在我的布局屏幕上没有变化。它仍然是“2015年十大戏剧”。
TLDR;变量'title'在shell上发生变化,但在布局屏幕上没有变化。
答案 0 :(得分:1)
您需要使用StringProperty。
示例:
class MainApp(Screen):
vid = StringProperty("Top 10 Plays of 2015")
title = StringProperty("Top 10 Plays of 2015") #yay!!!
def __init__(self,**kwargs):
super(MainApp,self).__init__(**kwargs)