当我创建一个需要使对象使用该类的类时。 每当我触摸屏幕时,我都会列出一个新的对象列表。 但我不知道如何在kivy方面显示这些对象。
这是我的python代码:
class Cow(Widget):
pass
class Farm (Widget):
cow_flock = ListProperty([])
def on_touch_down (self, touch):
self.cow_flock.append(Cow())
这是我的kivy代码:
<Cow>:
size: 70, 70
canvas:
Rectangle:
size: self.size
pos: self.pos
<House>:
self.cow_flock #this should display the cows
我错了:
kivy.lang.ParserException: Parser: File "<inline>", line 12:
...
10:
11:<House>:
>> 12: self.doorlist
13:
14:
...
Invalid property name
我是Kivy的新人,我不确切知道它是如何运作的。 换句话说;我不知道我必须使用哪种语法。 我感谢每一个帮助!!谢谢!
答案 0 :(得分:0)
如果您动态创建小部件,则必须使用父级Layout
方法将其添加到父级(通常为add_widget
)。
我们假设您的Farm
课程是某种Layout
(为此,FloatLayout
或RelativeLayout
可能是最好的)。
您可以添加一个事件处理程序来监视cow_flock
属性的更改:
class Farm(RelativeLayout):
cow_flock = ListProperty()
def on_cow_flock(self, cow_flock):
self.clear_widgets()
for cow in cow_flock:
self.add_widget(cow)
这将清除Farm
实例的所有子窗口小部件,并逐个添加每个奶牛。请注意,on_cow_flock
仅在列表更改(即附加或删除项目)时触发,而不是在列表项更改时触发。
顺便说一句,我还假设House
和Farm
在您的代码段中表示相同的内容。