Kivy:从kv语言设置ListProperty

时间:2015-09-27 02:12:21

标签: python-2.7 kivy listproperty

我正在使用Kivy构建一个简单的应用程序,可以在选项卡式面板的不同选项卡中加载不同的图像。不同的Panel项应该表现得相似,但是使用不同的图像,所以我创建了一个widget类。我试图使用kv语言初始化我的应用程序,就像许多例子一样 目前,我无法使其工作,因为我找不到如何将列表中的文件名从kv语言部分传递到窗口小部件实例。我可以使用其他属性,但ListProperty让我难过。

以下是我的代码中的代码段:

Builder.load_string("""
<MyMainClass>:
    #stuff
    TabbedPanelItem:
        MyClassLayout:
            filenames: ['pic1.jpg', 'pic2.jpg', 'pic3.jpg', 'pic4.jpg']
    #other TabbedPanelItems like the one above, 
    #with different strings in the list
""")

def MyMainClass(TabbedPanel):
    pass

def MyClassLayout(FloatLayout):
    filenames = ListProperty([])
    #rest of my class

我已经尝试过的事情:

  • 在kv语言部分中使用不同的括号分配列表:我尝试过()和{},但没有括号。
  • 以不同方式初始化ListProperty:我尝试在其中添加一些字符串。
  • 发送不同的列表:我尝试发送数字而不是字符串。

结果始终是我的窗口小部件中的文件名列表始终为默认值。那将是上面的片段中的[],或者我在课堂上的声明中设置的任何内容。

有人请指出我做错了什么吗?

感谢。

1 个答案:

答案 0 :(得分:1)

我设法解决了这个问题。

问题是我试图读取构造函数中的列表。但是,它们在widget对象完成构造函数后从kv lang部分接收它们的值。

作为修复,我调用读取列表的方法如下:

library(data.table)
setDT(df)[!is.na(var1) & var1=='k' & var3=='n', var2 := var2/9]

我希望人们能够找到这一点并帮助他们。