为什么这段代码从第21行获得KeyError?
我尝试过类似代码的不同版本,但这是获取KeyError的唯一文件。
要点:https://gist.github.com/Crowbrammer/464ae3ae3ddd7d33a9eb64d856acacd0
为什么它缺少Kivy文件中每个元素的id?
为什么 init ()函数下面的函数可以使用完全相同的代码行 - 但是init()函数没有?
答案 0 :(得分:0)
我认为record_new_model
不会被调用。
你的构造函数失败了,其余的并不重要。
您没有正确设置ID。
你需要做这样的事情
<ModelAddLayout>:
model_add_name: model_add_name
orientation: 'vertical'
padding: 20, 20
Label:
id: title_label
text: 'Model Add Screen'
font_size: '30dp'
# text_size: '15dp'
TextInput:
id: model_add_name
text: 'Add your model name here'
multiline: False
当您向孩子添加ID时,它不会被添加到父级。您还需要将ID添加到父级:model_add_name: model_add_name
。
答案 1 :(得分:0)
root确定首先将哪些元素加载到代码中。
此代码是ScreenManagement。其他人的根是ModelAddLayout。
因此,对于我链接的代码,它会比我预期的更晚加载kv文件的元素,因此ids属性中没有要调用的键。
然后,我开始工作的是将除super()之外的所有内容放入一个新函数late_init(self,keys,** largs)。
之后,我将Clock.schedule_once(self.late_init,0)放在 init ()超级之后。
这使应用程序有时间填充ID,使我的下拉列表成为现实。
(从评论到Radu Dita的答案。)