Python 3.x 按其id从python文件中删除小部件
我想知道如何从python文件中按id删除小部件。为了准确理解我的意思,让我们来考虑这个代码: 白痴 .kvPython 3.x 按其id从python文件中删除小部件,python-3.x,kivy,Python 3.x,Kivy,我想知道如何从python文件中按id删除小部件。为了准确理解我的意思,让我们来考虑这个代码: 白痴 .kv : 网格布局: 科尔斯:1 id:主网格 如何才能做到这一点?加载kv文件/字符串时会创建ids字典,而在python代码中创建对象(具有id属性)不会将该对象放入ids。因此,您不能通过其id删除此类对象。只需将对已添加小部件的引用传递给remove()方法,即可完成删除操作: class A: def create(self): layout = GridL
:
网格布局:
科尔斯:1
id:主网格
如何才能做到这一点?加载
kv
文件/字符串时会创建ids
字典,而在python代码中创建对象(具有id
属性)不会将该对象放入ids
。因此,您不能通过其id
删除此类对象。只需将对已添加小部件的引用传递给remove()
方法,即可完成删除操作:
class A:
def create(self):
layout = GridLayout(cols=1)
label = Label(text="some text ")
button = Button(text="delete", on_press=partial(self.remove, layout))
layout.add_widget(label)
layout.add_widget(button)
self.ids.main_grid.add_widget(layout)
def remove(self, layout, button):
self.ids.main_grid.remove_widget(layout)
如果我在一个循环中包含
create()
方法的内容会怎么样?当我这样做时,只有最后一个小部件被删除,但是我如何删除按钮所属的小部件呢?请参阅更新的答案。这仍然只删除最后一个小部件。当我按下第一个按钮时,我希望第一个布局被删除。有没有办法做到这一点?最后一次更新。
<A>:
GridLayout:
cols:1
id: main_grid
class A:
def create(self):
layout = GridLayout(cols=1)
label = Label(text="some text ")
button = Button(text="delete", on_press=partial(self.remove, layout))
layout.add_widget(label)
layout.add_widget(button)
self.ids.main_grid.add_widget(layout)
def remove(self, layout, button):
self.ids.main_grid.remove_widget(layout)