kivy得到了id的孩子

时间:2015-09-27 02:43:26

标签: python-3.x kivy

python 3.4.3 kivy 1.9.0

我正在尝试仅通过ID检索子图像列表。 这是从列表中删除或clear_widgets所有图像

kv的设置类似于:

<Gui>:
    grid: grid_1
    BoxLayout:
        Orientation: 'horizontal'
        Button:
            on_press: app.do_something()
        GridLayout:
            id: grid_1
            cols: 4

py文件是这样的:

class GuiApp(App):
    list = ['test','test2',...]

    def build(self):
        G = Gui()
        for i in list:
            G.grid.add_widget(Image(source=i))

    def do_something(self):
        G = Gui()
        G.grid.clear_widgets([i for i in G.grid.children if type(i) is Image])

class Gui(BoxLayout):
    grid = ObjectProperty(None)

应该发生的是网格布局应该清除之前通过for循环添加到窗口小部件的所有图像,当我运行它时,没有任何消失,所有图像都保留,我收到错误在CMD窗口中说[WARNING] <kivy.uix.gridlayout.GridLayout object at 0x00000000080B90A8> have no cols or rows set, layout is not triggered.

1 个答案:

答案 0 :(得分:0)

您的代码的第一个问题是您的none方法创建了一个masonry对象但从未返回它。您应该在方法的末尾添加build

然后,在Gui方法上,您再次通过return G创建新的do_something对象。要访问您在Gui方法上创建的同一G = Gui()对象,您应该将其创建为G

这里应该是什么样子:

build