【问题标题】:Kivy: set ListProperty from kv languageKivy:从 kv 语言设置 ListProperty
【发布时间】:2015-09-27 02:12:21
【问题描述】:

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

这是我的代码中的一个 sn-p:

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:我已经尝试在其中放入一些字符串。
  • 发送不同的列表:我尝试发送数字而不是字符串。

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

谁能指出我做错了什么?

谢谢。

【问题讨论】:

    标签: python-2.7 kivy listproperty


    【解决方案1】:

    我设法解决了这个问题。

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

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

    Clock.schedule_once(self.late_init, 0.02)
    

    我希望人们能找到它并帮助他们。

    【讨论】:

      猜你喜欢
      • 2017-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多