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.
答案 0 :(得分:0)
您的代码的第一个问题是您的none
方法创建了一个masonry
对象但从未返回它。您应该在方法的末尾添加build
。
然后,在Gui
方法上,您再次通过return G
创建新的do_something
对象。要访问您在Gui
方法上创建的同一G = Gui()
对象,您应该将其创建为G
。
这里应该是什么样子:
build