嗯,我是初学者使用kivy框架,所以我认为这里有人可以帮助我。 我的问题是: 在我的应用程序中,用户输入数字n,然后应用程序返回n个TextInput小部件。但是我如何使用每个TextInput上插入的值?第一部分很容易做到,我是通过列表完成的。 (如果有人知道如何直接在kv文件上做,我会很感激)。我的问题是在第二部分,我需要稍后使用和操作这些值(在TextInputs中),但我无法达到它们。我的意思是,我为列表中的每个小部件设置了一个id,但我无法达到它们的.text属性。这是我的一段代码:
class FirstLayout(BoxLayout):
def next_layout(self):
self.clear_widgets()
secondLayout = Factory.SecondLayout()
number = NumericProperty()
# This 'number' variable came from another widget on kv file
textinput_list = []
# That list will receive as many TextInputs field as my variable 'number' said (by the loop for)
for i in range(int(self.number.text)):
textinput_list.append(TextInput())
textinput_list[i].id = "input" + str(i + 1)
# So for each textinput, i added a id named 'inputx' (where x is the number of the current
# iteration) my question resides here. How could i use those values (inside of each textinput
# on this list
# later? Because i'm not creating these widgets (TextInputs) on kv language so i don't know how to
# bind the ids for a new variable directly in .py file
secondLayout.container.add_widget(textinput_list[i])
self.add_widget(secondLayout)
答案 0 :(得分:0)
如果我理解你的问题,你只需要textinput_list
一个类变量。所以这个。
textinput_list = []
变为
self.textinput_list = []
假设你有一个FirstLayout的对象叫做第一个。使用first.textinput_list[0]
,您可以访问第一个textinput,依此类推。
如果你想通过id轻松访问textinput,我会建议使用字典,键是id,输入值是
。