我正在使用python在kivy中动态添加小部件,并希望能够访问id,text等属性。
self.ids.grid.cols = 4
for i in range(12):
self.ids.grid.add_widget(TextInput(id = str(i+1), text = 'Teste'))
我尝试了
print(self.ids.grid.1)
或
print(self.ids.grid.'1')
self.ids.grid.cols = 4
for i in range(12):
self.ids.grid.add_widget(TextInput(id = str(i+1), text = 'Teste'))
我希望能够将数据写入数据库,但是首先我需要访问小部件
答案 0 :(得分:1)
使用for
循环访问id
和text
。
for child in reversed(self.ids.grid.children):
if isinstance(child, TextInput):
print(f"child: id={child.id}, text={child.text}")
id
id
的值是一个字符串。id
未存储在self.ids
字典类型属性中。id
(例如id='ti'
)来引用对象及其属性,例如self.ids.ti
或self.ids['ti']
id
id
的值是 不是 一个字符串。id
存储在self.ids
字典类型属性中。id
(例如id: ti
)来引用对象及其属性,例如self.ids.ti
或self.ids['ti']
Kv language » Referencing Widgets
为
id
分配值时,请记住该值不是 串。没有引号:好->
id: value
,不好->
id: 'value'
答案 1 :(得分:0)
我通常将它们添加到字典或列表中,以较方便的为准。 这当然意味着要在构造函数中添加新列表
self.text_inputs = []
然后将小部件添加到其中
self.ids.grid.cols = 4
for i in range(12):
text_input = TextInput(id = str(i+1), text = 'Teste')
self.text_inputs.append(text_input)
self.ids.grid.add_widget(text_input)
然后使用
轻松访问它print(self.text_inputs[1].text)