Kivy:如何在Kivy中显示对象列表?

2024-05-20 10:10:07 发布

您现在位置:Python中文网/ 问答频道 /正文

当我创建一个类时,需要使对象使用该类。 我做了一个列表,每次我触摸屏幕都会得到一个新对象。 但我不知道如何在kivy的一侧显示这些对象。在

下面是我的python代码:

class Cow(Widget):
   pass


class Farm (Widget):       

   cow_flock = ListProperty([])

   def on_touch_down (self, touch):
       self.cow_flock.append(Cow())                

这是我的kivy代码:

^{pr2}$

一个错误:

  kivy.lang.ParserException: Parser: File "<inline>", line 12:
  ...
       10:
       11:<House>:
  >>   12:    self.doorlist
       13:
       14:
  ...
  Invalid property name

我是新来的基维,我不知道它到底是怎么工作的。 换句话说,我不知道要用什么样的语法。 我很感激你的帮助!!谢谢您!在


Tags: 对象代码self列表屏幕passwidgetclass
1条回答
网友
1楼 · 发布于 2024-05-20 10:10:07

如果动态创建小部件,则必须使用父控件的add_widget方法将它们添加到父控件(通常是Layout)。在

让我们假设您的Farm类是某种Layout(对此,FloatLayout或{}可能是最好的)。 您可以添加一个事件处理程序来监视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实例的所有子窗口小部件,并将每个cow逐个添加回原处。请注意,on_cow_flock只在列表更改(即追加或删除项)时激发,而不是在列表项更改时激发。在

顺便说一句,我还假设House和{}在代码片段中是相同的意思。在

相关问题 更多 >