Python Kivy:如何在Kivy中显示对象列表?
当我创建一个需要创建对象以使用该类的类时。 我做了一个列表,每次我触摸屏幕时都会得到一个新的对象。 但我不知道如何在kivy侧显示这些对象 以下是我的python代码:Python Kivy:如何在Kivy中显示对象列表?,python,kivy,kivy-language,Python,Kivy,Kivy Language,当我创建一个需要创建对象以使用该类的类时。 我做了一个列表,每次我触摸屏幕时都会得到一个新的对象。 但我不知道如何在kivy侧显示这些对象 以下是我的python代码: class Cow(Widget): pass class Farm (Widget): cow_flock = ListProperty([]) def on_touch_down (self, touch): self.cow_flock.append(Cow(
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
:
尺码:70,70
画布:
矩形:
大小:self.size
pos:self.pos
:
self.cow#u flock#这应该显示奶牛
我犯了一个错误:
kivy.lang.ParserException: Parser: File "<inline>", line 12:
...
10:
11:<House>:
>> 12: self.doorlist
13:
14:
...
Invalid property name
kivy.lang.ParserException:解析器:文件“”,第12行:
...
10:
11::
>>12:自助入户名单
13:
14:
...
无效的属性名
我是新来的,我不知道它到底是怎么工作的。
换言之;我不知道该使用哪种语法。如果动态创建小部件,则必须使用父级的
添加小部件方法将它们添加到父级(通常是布局
)
让我们假设您的Farm
类是某种Layout
(对于这种情况,FloatLayout
或RelativeLayout
可能是最好的)。
您可以添加一个事件处理程序来监视cow\u 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)
这将清除农场
实例的所有子窗口小部件,并将每个cow逐个添加回。请注意,仅当列表更改时(即添加或删除项目),而不是当列表项目更改时,才会激发\u cow\u flock上的
顺便说一句,我还假设House
和Farm
在代码片段中的意思相同。如果动态创建小部件,则必须使用父级的添加小部件
方法将它们添加到父级(通常是布局
)
让我们假设您的Farm
类是某种Layout
(对于这种情况,FloatLayout
或RelativeLayout
可能是最好的)。
您可以添加一个事件处理程序来监视cow\u 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)
这将清除农场
实例的所有子窗口小部件,并将每个cow逐个添加回。请注意,仅当列表更改时(即添加或删除项目),而不是当列表项目更改时,才会激发\u cow\u flock上的
顺便说一句,我还假设House
和Farm
在代码片段中的意思相同。正是我想看到的。非常感谢你!你帮了我很多,正是我想看到的。非常感谢你!你帮了我很多