Kivy - 数据修改后不刷新/更改数据?

时间:2016-02-19 06:48:28

标签: python kivy

所以我正在创建一个像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上发生变化,但在布局屏幕上没有变化。

1 个答案:

答案 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)