按ID删除小部件时出现kivy键错误

时间:2020-11-09 07:31:04

标签: python kivy

我通过以下方式添加了小部件

current_mouth = Image(
        source=character.current_mouth,
        pos_hint=character.mouth_pos,
        size_hint_y= None,
        height= 500,
        id='mouth_'+str(character.id)
    )
    print('mouth_'+str(character.id))
    self.ids.float.add_widget(current_mouth)

然后我尝试将其删除:

self.ids.float.remove_widget(self.ids['mouth_'+str(character.id)])

但这会引发Key错误。我在这里做错了什么?谢谢

1 个答案:

答案 0 :(得分:0)

加载ids文件/字符串时,将构建kv字典。您无法在python中分配id(至少不会出现在ids中的一个)。因此,使用add_widget()添加的内容将不会显示在ids中。

来自documentation

在处理kv文件时,对所有标记有的小部件进行弱引用 id被添加到根小部件的id字典中。

要删除该窗口小部件时,可以仅使用对该窗口小部件的引用。如果看不到您的更多代码,我无法确定会是什么。但是类似:

self.ids.float.remove_widget(current_mouth)
相关问题